Change Checkbox value without triggering onCheckChanged

前端 未结 19 1060
广开言路
广开言路 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:45

    This is a simple solution I used:
    Define a custom listener:

    class CompoundButtonListener implements CompoundButton.OnCheckedChangeListener {
    
        boolean enabled = false;
    
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
    
        }
    
        void enable() {
            enabled = true;
        }
    
        void disable() {
            enabled = false;
        }
    
        boolean isEnabled() {
            return enabled;
        }
    }
    

    Initialization:

    CompoundButtonListener checkBoxListener = new CompoundButtonListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
            if (isEnabled()) {
                // Your code goes here
            }
        }
    };
    myCheckBox.setOnCheckedChangeListener(checkBoxListener);
    

    Usage:

    checkBoxListener.disable();
    
    // Some logic based on which you will modify CheckBox state
    // Example: myCheckBox.setChecked(true)
    
    checkBoxListener.enable();
    

提交回复
热议问题