检查在android中选中/取消选中的复选框

时间:2014-10-31 15:24:10

标签: android checkbox

我在运行时创建复选框,但我不知道如何找到选中哪个复选框以及哪个未选中?这是代码。

for (String s : options)
{
   chk = new CheckBox(this);
   System.out.println(s);
   chk.setId(i++);
   chk.setText(s);  
   selected=s;
   chk.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (((CheckBox) v).isChecked())
     DisplayToast(selected);
else
     DisplayToast(selected);
}
});
lm.addView(chk);
}

2 个答案:

答案 0 :(得分:3)

您应该使用onCheckedChangeListener来定义您的复选框是否已选中:

chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            //checked
        } else {
            //not checked
        }
    }
});

答案 1 :(得分:2)

您可以使用id方法获取CheckBox getId() ..

CheckBox checkBox = ((CheckBox) v);

if (checkBox.isChecked())
{
    int checkBoxId = checkBox.getId(); // It will give you checked checkbox id..
    DisplayToast(selected);
}
else
     DisplayToast(selected);

<强>更新

要获取所有CheckBox状态,您必须通过ChildViews布局lm进行迭代。

类似的东西,

for (int i = 0; i < lm.getChildCount(); i++) {
    View v = lm.getChildAt(i);
    if (v instanceof CheckBox) {
      if (((CheckBox) v).isChecked())
      // Check Checkbox
      else
      // Unchecked Checkbox
    } 
}

注意:我建议您使用onCheckedChangeListener代替View.OnClickListener()来检查 - 取消选中CheckBox的事件。 (但它是可选的,它也适用于OnClickListener