2014-10-31 59 views
1

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

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); 
} 
+1

您可以简单地将生成的CheckBox存储在列表中。然后迭代并调用每个 – cYrixmorten 2014-10-31 15:25:29

+1

上的isChecked()你也可以迭代所有视图的lm,检查它们是否是'instanceof'复选框,将它们转换为CheckBox并检查它们是否被检查。 – 2014-10-31 15:27:18

回答

2

可以使用getId()方法得到的CheckBoxid ..

CheckBox checkBox = ((CheckBox) v); 

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

更新:

要获得所有复选框状态,您必须迭代lm布局的ChildViews

喜欢的东西,

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一起使用)

+0

谢谢..它的工作.. – 2014-10-31 17:07:06

3

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

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