从多个复选框中选择一个复选框并让用户选择复选框

bee*_*ear 1 checkbox android android-checkbox


我在一项活动中有 16 个复选框,用户必须从中选择 8 个复选框中的任意一个。
因此,最终用户将从其中的 16 个复选框中选择 2 个。

更新:复选框已经存在于 xml 布局文件中。所以,我确实可以访问他们的 ID

直到现在,我正在考虑实现一个简单的 onCheckedChange 侦听器,并在 switch case 块中选择 8 个复选框中的任意 1 个复选框并取消选择其余 7 个复选框。但这种方法极其痛苦。

此外,当我需要提取其中的哪个被选中时,这将是一团糟。

那么,我可以做这两件事的最简单而灵活的方法是什么?欢迎提出建议
谢谢

Luk*_*rog 5

您可以通过将它们分组在一个数组中(以便于访问和处理)并为每个设置 a来设置状态,CheckBox一次只检查一个(类似于 a RadioGroupOnClickListener

CheckBox[] chkArray = new CheckBox[8];
chkArray[0] = (CheckBox) findViewById(R.id.cb1R1);
chkArray[0].setOnClickListener(mListener);
chkArray[1] = (CheckBox) findViewById(R.id.cb2R1); // what id do you have?
chkArray[1].setOnClickListener(mListener);
// so on for the rest of the 8 CheckBoxes

private OnClickListener mListener = new OnClickListener() { 

     @Override
     public void onClick(View v) {
        final int checkedId = v.getId();
        for (int i = 0; i < chkArray.length; i++) {
            final CheckBox current = chkArray[i];
            if (current.getId() == checkedId) {
                 current.setChecked(true);
            } else {
                 current.setChecked(false);
            }
       }    
    }
};
Run Code Online (Sandbox Code Playgroud)