CheckBox:屏蔽setChecked方法對OnCheckedChangeListener的影

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

相關文章
相關標籤/搜索