我使用以下代码生成复选框:
public void drawCAnswers(int pst){
rcflag = 1;
int drawables = qmclist.get(pst).getAnswers().size();
LinearLayout ll = new LinearLayout(this);
CheckBox[] cbs = new CheckBox[drawables];
ll.setOrientation(LinearLayout.VERTICAL);
for (int i=0; i<drawables;i++){
cbs[i] = new CheckBox(this);
cbs[i].setId(i);
cbs[i].setText(current.getAnswers().get(i).getAns());
ll.addView(cbs[i]);
}
parentLinearLayout.addView(ll, parentLinearLayout.getChildCount());
}
我希望能够在单击按钮时检查选中了哪个复选框,并获取其文本。我的代码怎么能完成这个呢?
设置onClick侦听器似乎不对,因为只有当我单击“下一步”按钮时,我才能看到哪些被选中,如果在单击someones(de)之前选择一个复选框,则无关紧要。 / p>
例如,在下图中,当我点击“问题suivante”时,我应该获得两个选中复选框的文本,并最终将它们保存在某个列表中。
非常感谢。
答案 0 :(得分:1)
当面对选中的更改事件时,您尝试获取字符串并存储到列表中。 试试这个:
List<String> yourList = new ArrayList<>();
for (int i=0; i<drawables;i++){
cbs[i] = new CheckBox(this);
cbs[i].setId(i);
cbs[i].setText(current.getAnswers().get(i).getAns());
cbs[i].setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
yourList.add(buttonView.getText().toString());
} else {
yourList.remove(buttonView.getText().toString());
}
}
});
ll.addView(cbs[i]);
}