Получить сгенерированный флажок Checked State - PullRequest
0 голосов
/ 03 мая 2018

Я создаю флажки со следующим кодом:

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», я должен получить текст двух выбранных флажков и в конечном итоге сохранить их в некотором списке.

enter image description here

Большое спасибо.

1 Ответ

0 голосов
/ 03 мая 2018

Вы пытаетесь получить строку и сохранить в списке, когда сталкиваетесь с отмеченным событием изменения. Попробуйте это:

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