我有一个对象,其中的文本循环和显示状态消息。当消息发生变化时,我希望对象的单击事件发生变化,以将您带到与消息相关的活动。

我有一个TextView mTitleView我像这样分配事件。

public void setOnTitleClickListener(OnClickListener listener) {
    mTitleView.setOnClickListener(listener);
}

我如何删除点击事件?有一些状态消息没有可操作的区域,所以我想关闭单击事件。我还希望能够循环遍历这些单击事件并正确地处理它们,但我不确定最佳实践。


当前回答

使用Kotlin作为

view.setOnClickListener { null }
view.isClickable = false

其他回答

mTitleView.setOnClickListener(null)应该做的技巧。

一个更好的设计可能是在OnClickListener中检查状态,然后确定是否单击应该做一些事情,而不是添加和清除单击侦听器。

也许setOnClickListener(null) ?

您可以添加以下扩展函数:

fun View.removeClickListener() {
  setOnClickListener(null)
  isClickable = false
}

然后对你的调用者,你会这样做:

val textView = findViewById(R.id.activity_text)
textView.removeClickListener()

使用Kotlin作为

view.setOnClickListener { null }
view.isClickable = false

只需像下面那样重新初始化item即可。它会根据项目删除onclick,onlonglick,onitemclick,onitemlongclick

mTitleView = findViewById(R.id.mTitleView);