显示在Android中检查了多少个复选框?

时间:2015-12-03 01:19:49

标签: java android

我在xml上有25个复选框。 我想知道文档中有多少个框被检查。 试图像这样循环..

  p1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (p1.isChecked()){
            palm1=longitude+","+latitude;
            //Toast.makeText(getBaseContext(), palm1, Toast.LENGTH_SHORT).show();
        }else {
            palm1="health";
            //Toast.makeText(getBaseContext(), "uncheck", Toast.LENGTH_SHORT).show();
        }

        percentage();

            }});  




public void percentage(){
        Vector<CheckBox> allCheck=new Vector<CheckBox>();
        int counterChecked=0;

        allCheck.add(p1);
        allCheck.add(p2);
        allCheck.add(p3);
        allCheck.add(p4);
        ................
        allCheck.add(p25);


        for(int i=0; i<allCheck.size();i++)
               if(allCheck.get(i).isChecked()){
               counterChecked++;
               }

        double percent = (counterChecked * 100) / allCheck.size();
        persen=String.format("%.1f %%", percent);
        kerusakan= Integer.toString(counterChecked);
 Toast.makeText(getBaseContext(),percent, Toast.LENGTH_SHORT).show();

        Toast.makeText(getBaseContext(), kerusakan, Toast.LENGTH_SHORT).show();


    }

但它表示0值。 我怎样才能知道检查了多少个盒子?

2 个答案:

答案 0 :(得分:0)

我建议使用计数器。当用户点击复选框时,您将检查它是否会被选中或取消选中。在第一种情况下,您将执行计数器++;在第二种情况下反击 - ; 但是,您应该向我们展示一些代码示例,以获得更具体的答案。

答案 1 :(得分:0)

通过在整个活动中实施OnCheckChangeListener,可以节省代码和时间。这应该触发任何复选框的单击,然后您可以在onCheckChanged方法实现上创建计数例程。

这样的事情:

  

public class YourActivity extends Activity实现OnCheckedChangeListener {

...在这里声明一个全局数组

private CheckBox[] checkboxes;

.... onCreate方法中的某个地方

    checkboxes = new CheckBox[3];

    for (int i = 0; i < checkboxes.length; i++) {
            String checkboxID = "checkBox" + (i + 1);

            int resID = getResources().getIdentifier(checkboxID, "id",
                    getPackageName());
            checkboxes[i] = ((CheckBox) findViewById(resID));
            checkboxes[i].setOnCheckedChangeListener(this);
            allCheckBoxes.add(checkboxes[i]);
    }

...以及界面的覆盖方法

    @Override
  public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
    int countOfCheckBoxesChecked = 0;
    for (CheckBox checkbox : allCheckBoxes) {
      if (checkbox.isChecked()) {
        countOfCheckBoxesChecked++;
      }
    }
    Log.i(TAG, "number of checked = " + countOfCheckBoxesChecked);

  }