我想获得动态添加CheckBox的价值,但是当我想看看我的checkBox.isChecked()之一时;它只在我检查创建的最后一个复选框时才响应!这是我的容器。
for (String answer : multiMap.get(questionFromMultiMap))
{
i++;
et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null);
et_button.setText(answer);
et_button.setId(i);
container.addView(et_button);
listOfChoice.add(answer);
}
我想检查一下这样检查:
btnCorrect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (et_button.isChecked()){
System.out.println(et_button.getId());
}else{
System.out.println("pouet");
}
}
});
在谷歌找不到正确的答案! 谢谢你的帮助
答案 0 :(得分:1)
当你调用et_button.isChecked()时,会在最后一个膨胀的视图中调用它,因为你会在循环的每次迭代中覆盖它。 您应该将它们添加到List中,然后在onClickListener中检查选中哪一个:
List<CheckBox> list = new LinkedList<>(); //this should be visible from onClickListener, so it should be an instance field
for (String answer : multiMap.get(questionFromMultiMap)) {
i++;
CheckBox et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null);
et_button.setText(answer);
et_button.setId(i);
list.add(et_button);
container.addView(et_button);
listOfChoice.add(answer);
}
btnCorrect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(CheckBox cb : list) {
if (cb.isChecked()){
System.out.println(cb.getId());
}else{
System.out.println("pouet");
}
}
}
});
Haven没有对它进行过测试,但它应该有效。