如何检查所有CheckBox是否已选中按钮单击android

时间:2014-04-01 06:15:01

标签: android checkbox android-checkbox

下面是我正在检查所有强制CheckBox在NEXT按钮上检查的代码。共有17个复选框。但是我在一个警告框中显示这个,所以它没有在View中采用这种布局,并在实际布局中计算了已检查项目的数量。请帮我解决这个问题。

public void showConfirmPopup()
{
    final Dialog dialog = new Dialog(SubmitViewActivity.this);
    dialog.setContentView(R.layout.activity_uikyc);
    dialog.setCancelable(false);
    Button back=(Button)dialog.findViewById(R.id.btn_bck);
    Button next=(Button)dialog.findViewById(R.id.btn_next);
    final CheckBox[] checkboxes;
    checkboxes = new CheckBox[17];

    for(int i=0;i < checkboxes.length; i++){
        checkboxes[i] = (CheckBox) findViewById(getIdName("check_" + (i+1)));
    }

    back.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        dialog.cancel();
    }
    });

    next.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {
        // TODO Auto-generated method stub
    //int lenCheck = checkboxes.length;
    int iCheck = 0;
    for(int i=0;i<checkboxes.length;i++){

        if(checkboxes[i].isChecked()){
            iCheck++;
        }

    }
    Log.e(String.valueOf(iCheck), "count of checked option");
    if(iCheck != 17){
        Toast.makeText(SubmitViewActivity.this, "Confirm all Checkboxes are checked" , Toast.LENGTH_LONG).show();
        dialog.cancel();
    }else if(iCheck == 17){
    dialog.cancel();
    savedetails = new SaveDetails();
    savedetails.execute();
    }
    }
    });

    dialog.show();

}

1 个答案:

答案 0 :(得分:1)

试试这个..

将xml中的CheckBox ID更改为 check_1,check_2,check_3 ... check_17 ,如下所示每17

       <CheckBox
            android:id="@+id/check_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="check_1" />

java

在全局变量中明确为CheckBox[] checkboxs;并按下面的方式启动它

    checkboxs = new CheckBox[17];

    for (int i = 0; i < checkboxs.length; i++) {
        checkboxs[i] = (CheckBox) findViewById(getIdByName("check_" + (i + 1)));
    }

getIdByName 方法

public static int getIdByName(final String name) {

     try {

         final Field field = R.id.class.getDeclaredField(name);

         field.setAccessible(true);
         return field.getInt(null);

     } catch (Exception ignore) {
         return -1;
     }
 }

您可以使用以下代码检查是否选中了复选框。

    for (int i = 0; i < checkboxs.length; i++) {

        if(checkboxs[i].isChecked()){
              iCheck++;
        }
    }