0

我使用以下代码生成复选框:

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 侦听器似乎不正确,因为只有当我单击“下一步”按钮时,我才应该看到哪些被选中,在单击某人(取消)之前是否选中了一个复选框并不重要。

例如,在下图中,当我单击“问题 suivante”时,我应该获取两个选定复选框的文本,并最终将它们保存在某个列表中。

在此处输入图像描述

非常感谢。

4

1 回答 1

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

于 2018-05-03T16:02:39.813 回答