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

相关文章
相关标签/搜索