Change Checkbox value without triggering onCheckChanged

前端 未结 19 1092
广开言路
广开言路 2020-11-30 00:18

I have setOnCheckedChangeListener implemented for my checkbox

Is there a way I can call

checkbox.setChecked(false);
         


        
19条回答
  •  孤街浪徒
    2020-11-30 00:36

    My solution written in java based on @Chris answer:

    chkParent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if(buttonView.getTag() != null){
                        buttonView.setTag(null);
                        return;
                    }
                    if(isChecked){
                        chkChild.setTag(true);
                        chkChild.setChecked(false);
                    }
                    else{
                        chkParent.setChecked(true);
                    }
                }
    });
    
    chkChild.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if(buttonView.getTag() != null){
                        buttonView.setTag(null);
                        return;
                    }
                    if(isChecked){
                        chkParent.setTag(true);
                        chkParent.setChecked(false);
                    }
                    else{
                        chkChild.setChecked(true);
                    }
                }
    });
    

    2 checkboxes and always one will be checked (one be must checked initially though). Setting tag to true blocks onCheckedChanged listener.

提交回复
热议问题