У меня есть ListView
с несколькими элементами, чтобы они были повторно использованы во время прокрутки. Элемент состоит из пары TextViews
и RadioGroup
, содержащих 3 RadioButtons
.Помните выбранное состояние RadioButton внутри списка
Проблема, с которой я сталкиваюсь, заключается в том, что когда я выбираю, например, RadioButton
для каждого из 5 элементов, когда я прокручиваю список вниз и создаю резервную копию снова, выбор, который я сделал в начале, не сохраняется (что означает, что RadioButton
или неправильный будет отображаться как выбранный), в то время как также может случиться так, что некоторые RadioButtons
будут отображаться как выбраны, даже если я никогда не использовал их.
Я пытаюсь сохранить checkedId
из списка в списке, но не повезло.
После моего кода:
public View getView(int position, View convertView, ViewGroup parent) {
...
int questionID = question.getQuestionID();
if (mappedSelectedAnswer.containsKey(questionID)) {
radioGroup.check(mappedSelectedAnswer.get(questionID));
} else {
radioGroup.check(-1);
}
...
}
И в RadioGroupListener
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId != -1) {
mappedSelectedAnswer.put(questionID, checkedId);
}
...
});
mappedSelectedAnswer
является список с ключом questionID
, значение checkedId
Как-нибудь есть какие-либо предложения по этому вопросу?
Благодаря
Возможно, это связано с тем, что ваша «радиогруппа» перерабатывается при прокрутке. [Проверьте этот ответ.] (Http://stackoverflow.com/questions/2937581/android-how-to-make-radiogroup-work-correctly-in-a-listview) –
Как я уже сказал, я уже знаю, что причина, что мне нужно - эффективное решение. Я проверил ответ, который вы связали, но я не понимаю. Можете быть более конкретными? спасибо – carlodonz