复选框验证,仅获取复选框

时间:2018-08-23 06:15:48

标签: java android

我的应用程序中有很多复选框,我发现检查每个项目是否被选中很不方便。因此,我想知道是否有一种方法可以只选中它,而忽略一堆未使用的复选框。

现在,我的想法是要做类似的事情

 if (cb1.isChecked()) //do something
 if (cb2.isChecked()) //do something

 ...

 if (cb32.isChecked()) //do something

但是我发现检查每个复选框太多了。有没有办法只获得选定的?

示例

一个 CheckBoxGroup ,您可以执行类似checkBoxGroup.getCheckedItems()

的操作

我已经检查了几个库,但是这种方式行不通。 任何帮助将不胜感激,在此先感谢!干杯!

4 个答案:

答案 0 :(得分:2)

您可以按照以下步骤操作:

1)首先获取所有复选框的父级的引用。 (它可能是任何布局类型的实例;例如find linearlayout。比如

LineartLayout parent  = (LinearLayout)findViewById(R.id.linearlayout);

2)然后创建一个字符串值的数组列表;说

ArrayList<String> checkedList  = new ArrayList();

3)然后运行for循环,如

for(int i=0; i<parent.getChildCount(); i++){
    if(parent.getChildAt(i) instanceof CheckBox){
        CheckBox checkBox = (CheckBox)parent.getChildAt(i);
        if(checkBox.isChecked()){
            checkedList.add(checkBox.getText());
         } 
     }
}

4)在for循环的最后,您将获得检查值的列表。

答案 1 :(得分:2)

尝试为您拥有的所有复选框设置一个OnCheckedChangeListener。喜欢

复选框1

CheckBox checkBox1 = findViewById(R.id.check_box1);
checkBox.setOnCheckedChangeListener(checkedChangeListener );

使用单个OnCheckedChangeListener取消n个复选框:

CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
           switch (buttonView.getId())
           {
               case R.id.check_box1:
                   if (isChecked)
                   {
                      //logic 1
                   }
                    else
                   {
                      //logic 2
                   }
                   ;
                   break;
           }
        }
    };

处理所有带有in开关的复选框。

答案 2 :(得分:1)

我建议您创建复选框列表。然后使用For循环或Do While循环仅选中复选框创建新数组。 通过这种方式,在新列表中,您将仅获得选中的复选框

答案 3 :(得分:1)

使用此循环,以其名称查找复选框:

for (int i = 1; i <= 32; i++) {
    int id = getResources().getIdentifier("cb" + i, "id", getPackageName());
    CheckBox cb = findViewById(id);
    if (cb.isChecked()) {
        // your code
    }
}

通过这种方式,您可以通过按钮的点击侦听器来获取所有已选中复选框的列表:

    final ArrayList<CheckBox> checked = new ArrayList<CheckBox>();

    Button button = findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            checked.clear();

            for (int i = 1; i <= 32; i++) {
                int id = getResources().getIdentifier("cb" + i, "id", getPackageName());
                CheckBox cb = findViewById(id);
                if (cb.isChecked()) {
                    checked.add(cb);
                }
            }
        }
    });

现在列表checked仅包含选中的复选框。