java - 如何区分物理复选框点击和调用 setChecked()?

标签 java android android-listview

我有一个 ListView ,每个列表项都包含一个复选框。

我的列表适配器正在按照建议重新使用 View ,因此它必须设置复选框的状态。它通过调用 setChecked() 来完成。这会导致调用我的 onCheckedChanged() 方法。没关系,但是当用户实际单击复选框时会调用相同的方法。

这里的问题是我想做一些不同的事情,这取决于点击是来自物理点击,还是对 setChecked()

的编程调用

我考虑过重写 onClick() 并在该方法中设置一个标志,但不幸的是 onClick() 之后被调用onCheckedChanged()

因此,如果需要,我可以发布代码,但基本问题是,如何区分更改复选框状态的物理点击和程序化复选框状态更改?

最佳答案

我过去这样做的方法是在复选框的所有者上有一个 boolean 属性,例如一个表单,通常称为抑制。

如果为真,则在事件处理程序中退出,当我想以编程方式设置属性时设置禁止,更改属性,重置禁止。 PIA 但它有效。

关于java - 如何区分物理复选框点击和调用 setChecked()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749219/

相关文章:

java - 我的圆周率计算器有什么问题?

java - 按频率排序单词? (从最低到最高)

java - 如何在Java中动态地将信息存储到包含字符串和整数的数据结构中

服务中的android自定义 toast

java - 如何在android java ListView 中选择多个项目

java - 如何从 Java 中的 InputStream 打开 MS Access 文件?

android - 如何防止recyclerview在 fragment onResume中自动滚动到顶部

android - 如果我们不需要它,如何销毁 ImageView 中的可绘制对象?

android - 不能对 Switch 组件使用 setOnCheckedChangeListener

android - 删除选定的 ListView 内容时出现问题