使用多个CheckBox进行联动时,应该使用setOnClickListener替代OnCheckedChangeListener
以下是错误代码(正确代码在文末):
private void initCheckBox(final List<CheckBox> checkBoxList, final CheckBox checkBoxAll) {
// 初始化 各个 子的 ChechBox
for (CheckBox checkBox : checkBoxList) {
checkBox.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
boolean isAllSelect = true; // 假设全部都已经被选中了
for (CheckBox checkBox : checkBoxList) { // checkBoxList_First
if (!checkBox.isChecked()) { // 只要有一个没被选中 ,就说明不是全部被选中,如果遍历完之后还没有找到,那么就设置为true
isAllSelect = false;
break;
}
}
checkBoxAll.setChecked(isAllSelect);
}
});
}
checkBoxAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
for (CheckBox che