在我的代码I setOnCheckedChangeListener
之前将初始值设置为CheckBox
,但在设置初始值后未调用侦听器方法:
final CheckBox check_box = convertView.findViewById(R.id.check_box);
check_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Some logic
}
}
在上面的行之后,我将初始值设置为CheckBox,如下所示,
if (isConditionTrue) {
check_box.setChecked(true);
} else {
check_box.setChecked(false);
}
}
但是,当使用方法onCheckedChanged
以编程方式更改检查值时,侦听器方法setChecked()
从未调用,但是当用户通过显示更改它时,将调用它。这是正常行为还是我错误地实施了它?
答案 0 :(得分:2)
setOnCheckedChangeListener()
。但是看看你的代码,看起来复选框的状态可能没有改变。
if (isConditionTrue) {
check_box.setChecked(true);
} else {
check_box.;
}
}
如果isConditionTrue
为false且check_box已取消选中,则setChecked(false)
将不会导致setOnCheckedChangeListener
的调用不会被调用。同样适用于已经选中的check_box,您尝试setChecked(true);
答案 1 :(得分:-1)
是的,它的正常行为。因为侦听器附加到复选框,当您在应用程序上更改它时,它将调用它。但是如果以编程方式更改它,它将不会执行。