1

用户界面示例

我想从父开关更改子开关的状态。

简单来说:

案例 1:父级开启 -> 所有子级开启

案例 2:父关闭 -> 所有子关闭

案例 3:孩子 2 关闭(孩子 1 和 3 开)-> 父母开

问题当我打开/关闭所有子开关时,父开关应相应地打开/关闭。

下面是我在代码案例 1,2 和 3 中工作正常的代码。

switchParent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

            if (b) {

                switchChild1.setChecked(true);
                switchChild2.setChecked(true);
                switchChild3.setChecked(true);

            } else {

                switchChild1.setChecked(false);
                switchChild2.setChecked(false);
                switchChild3.setChecked(false);

            }
        }
    }); switchChild1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            setState();
        }
    });

    switchChild2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            setState();
        }
    });


    switchChild3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            setState();
        }
    });

设置状态()

私人无效 setState() {

   if (switchChild1.isChecked() || switchChild2.isChecked() || switchChild3.isChecked()) {

        switchParent.setChecked(true);

    } else {

        switchParent.setChecked(false);

    }

}

我将不胜感激。

4

1 回答 1

1

更改您的 setState() 方法。

private void setState() {
if (switchChild1.isChecked() && switchChild2.isChecked() && switchChild3.isChecked()) {
    switchParent.setChecked(true);
} else {
    switchParent.setChecked(false);
}

}

于 2016-01-22T06:40:45.417 回答