Reputation: 89
I am creating checkboxes at runtime but i don't know how to find that which checkbox is checked and which is unchecked?This is the code.
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);
}
Upvotes: 1
Views: 7189
Reputation: 109237
You can get the id
of CheckBox
using getId()
method ..
CheckBox checkBox = ((CheckBox) v);
if (checkBox.isChecked())
{
int checkBoxId = checkBox.getId(); // It will give you checked checkbox id..
DisplayToast(selected);
}
else
DisplayToast(selected);
Update:
To get all CheckBox states you have to iterate thru ChildViews
of lm
layout.
Something like,
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
}
}
Note: I would suggest you can use onCheckedChangeListener
instead of View.OnClickListener()
to check - uncheck event of CheckBox
. (But it is optional, it also works with OnClickListener
)
Upvotes: 3
Reputation: 11982
You should use onCheckedChangeListener
to define whether your checkbox checked:
chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
//checked
} else {
//not checked
}
}
});
Upvotes: 3