检查选中的复选框

时间:2012-05-04 07:22:32

标签: java android checkbox findviewbyid

我的程序在一个页面上有50多个复选框。 我需要检查选择了哪些方框。

我知道我可以这样做:

CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);

if (cb1.isChecked){
//get Checkbox name
}
if (cb2.isChecked){
//get Checkbox name
}

但是,如果我必须使用超过50个复选框,这需要一些时间。 他们是一种更快速的方法来检查选择了哪个?类似的东西:

int i;

for (i = 0; i<checkBox.length; i++){
  CheckBox cb+i = (CheckBox) findViewById (R.id.checkBox+i);

     if (cb+i.isChecked){
     //get Checkbox name
     }
}

也许还可以说:你可以选择多于1个复选框。 我希望你知道我的意思。

谢谢, Bigflow

4 个答案:

答案 0 :(得分:1)

另一种解决方法可能是:

假设您在CheckBox中添加了LinearLayout,您可以在Java中获取LinearLayout引用并获取子视图,如下所示:

LinearLayout layout= (LinearLayout)findViewById(R.id.checkbox_container);
ArrayList values = new ArrayList();
for(int i=0; i<layout.getChildCount(); i++)
{
    View v = layout.getChildAt(i);
    if(v instanceof CheckBox)
    {
        CheckBox cb = (CheckBox)v;
        if(cb.isChecked())
        values.add(cb.getText().toString());
    }
}

答案 1 :(得分:0)

您可以从CheckBox制作一个数组,然后将每个代码添加到您的布局

CheckBox[] achecker = new CheckBox[50];
achercker[0] = new CheckBox(context);
当您不知道需要多少CheckBoxes时,

或使用ArrayList会更好

ArrayList<CheckBox> lchecker = new ArrayList<CheckBox>(); 
lchecker.add(new CheckBox(context));

答案 2 :(得分:0)

为您的复选框设置一个监听器。checkbox1.setOnCheckChangedListener(this)然后覆盖

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
if ( isChecked ){
            // to determine which checkbox use buttonView.getId();
        }
}

答案 3 :(得分:0)

您可以尝试下面这个,按计数设置ID:

ArrayList<Boolean> booleanList = new ArrayList<Boolean>();

    for(int counter=0; counter<50; counter++) {
        booleanList.add(false);
        CheckBox chkBox = new CheckBox(this);
        chkBox.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1));
        chkBox.setId(counter);
        chkBox.setOnClickListener(chkBoxOnClickListener);
}

private OnClickListener chkBoxOnClickListener = new OnClickListener() {
        @Override
        public void onClick(View view) {
        int chkboxID = ((CheckBox)view).getId();
        chkBox = (CheckBox) findViewById(chkboxID);
            if(chkBox.isChecked()) {
                booleanList.set(chkBox, true);
            }

        }
}