我有一个 ListView ,每个列表项都包含一个复选框。
我的列表适配器正在按照建议重新使用 View ,因此它必须设置复选框的状态。它通过调用 setChecked()
来完成。这会导致调用我的 onCheckedChanged()
方法。没关系,但是当用户实际单击复选框时会调用相同的方法。
这里的问题是我想做一些不同的事情,这取决于点击是来自物理点击,还是对 setChecked()
我考虑过重写 onClick()
并在该方法中设置一个标志,但不幸的是 onClick()
在 之后被调用onCheckedChanged()
因此,如果需要,我可以发布代码,但基本问题是,如何区分更改复选框状态的物理点击和程序化复选框状态更改?
最佳答案
我过去这样做的方法是在复选框的所有者上有一个 boolean 属性,例如一个表单,通常称为抑制。
如果为真,则在事件处理程序中退出,当我想以编程方式设置属性时设置禁止,更改属性,重置禁止。 PIA 但它有效。
关于java - 如何区分物理复选框点击和调用 setChecked()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749219/