方案(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