获取生成的复选框选中状态
Get generated checkbox Checked State
我使用以下代码生成复选框:
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 监听器似乎不对,因为只有当我点击 "Next" 按钮时我才应该看到哪些被选中,点击某人之前是否选择(取消)并不重要一个复选框。
例如,在下图中,当我点击 "Question suivante" 时,我应该获取两个选中复选框的文本,并最终将它们保存在某个列表中。
非常感谢。
您尝试在面对已检查的更改事件时获取字符串并存储到列表中。
试试这个:
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]);
}
我使用以下代码生成复选框:
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 监听器似乎不对,因为只有当我点击 "Next" 按钮时我才应该看到哪些被选中,点击某人之前是否选择(取消)并不重要一个复选框。
例如,在下图中,当我点击 "Question suivante" 时,我应该获取两个选中复选框的文本,并最终将它们保存在某个列表中。
非常感谢。
您尝试在面对已检查的更改事件时获取字符串并存储到列表中。 试试这个:
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]);
}