获取生成的复选框选中状态

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]);
}