我有一个listview,每个列表项都包含一个复选框。
我的列表适配器按照建议重新使用视图,因此它必须设置复选框的状态。它通过调用setChecked()
来做到这一点。这将导致我的onCheckedChanged()
方法被调用。很好,但是当用户实际单击复选框时,将调用相同的方法。
这里的问题是,我想做一些不同的事情,具体取决于点击是来自物理点击还是通过编程调用setChecked()
我曾考虑过重写onClick()
并在该方法中设置一个标志,但是不幸的是onClick()
在 onCheckedChanged()
之后被称为
因此,如果需要,我可以发布代码,但是基本问题是,如何区分更改复选框状态的物理点击和程序化复选框状态的变化?
最佳答案
我过去这样做的方法是在复选框的所有者上拥有一个布尔属性,例如通常称为禁止的表单。
然后,如果事件处理程序为true,则在事件处理程序中退出,并且当我要以编程方式设置属性set disable时,请更改属性,即reset disable。 PIA,但可以。