方案(1):ide
程序中定义一个全局变量boolean ignoreChange,而后,调用setChecked方法时改变ignoreChange的值:this
ignoreChange = true; selectAllCB.setChecked(true); ignoreChange = false;
而后在selectAllCB的OnCheckedChangeListener中对ignoreChange进行判断:code
selectAllCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (!ignoreChange) { //do something } } });
方案(2):ast
对于checkBox不注册OnCheckedChangeListener,而直接注册OnClickListener,变量
checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { boolean checked = ((CheckBox) v).isChecked(); Toast.makeText(CheckBoxTest.this, "isChecked?" + checked, Toast.LENGTH_SHORT).show(); } });
问题完美解决。List