我在运行时创建复选框,但我不知道如何找到选中哪个复选框以及哪个未选中?这是代码。
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);
}
答案 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
)