如何检查数组中的CheckBoxes是否为空?

时间:2016-01-14 03:36:41

标签: java android arrays checkbox

我有几个CheckBoxes:

    checkBox1 = (CheckBox)findViewById(R.id.one);
    checkBox2 = (CheckBox)findViewById(R.id.two;
    checkBox3 = (CheckBox)findViewById(R.id.three);
    checkBox4 = (CheckBox)findViewById(R.id.four);
    checkBox5 = (CheckBox)findViewById(R.id.five);
    checkBox6 = (CheckBox)findViewById(R.id.six);
    checkBox7 = (CheckBox)findViewById(R.id.seven);

然后我将它们添加到一个数组中:

    List<CheckBox> checkBoxes = new ArrayList<>();
    CheckBox checkBox;        
    checkBoxes.add(checkBox1); checkBoxes.add(checkBox2);
    checkBoxes.add(checkBox3); checkBoxes.add(checkBox4);
    checkBoxes.add(checkBox5); checkBoxes.add(checkBox6);
    checkBoxes.add(checkBox7);

如果其中一个CheckBox在按钮点击时为空,我想制作一个Toast。所以我在按钮内使用了for循环:

public void onButtonClick(){
        for(int i = 0; i <checkBoxes.size(); i++){
            checkBox = checkBoxes.get(i);
        }
       if(!checkBox.isChecked){
            //make Toast "Hey, you didn't check a box"
      }else{
           //do something based on the checked box.
      }
  }

问题是如果检查了CheckBox并且它没有执行else代码,则仍会显示Toast。 任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码仅获取最后一个复选框。你需要在循环中做更多的工作:

public void onButtonClick() {
    boolean atLeastOneChecked = false;
    for (int i = 0; i < checkBoxes.size(); i++){
        CheckBox checkBox = checkBoxes.get(i);
        if (checkBox.isChecked()) {
            atLeastOneChecked = true;
            break;
        }
    }
    if (!atLeastOneChecked){
        //make Toast "Hey, you didn't check a box"
    } else {
        //do something based on the checked box.
    }
}
相关问题