【发布时间】:2017-03-13 02:45:27
【问题描述】:
我有一个ListView 有几个项目,以便在滚动期间重复使用这些项目。
一个项目由一对TextViews和一个RadioGroup组成,包含3个RadioButtons。
我遇到的问题是,当我为 5 个项目中的每一个选择 RadioButton 时,当我向下滚动列表并再次向后滚动时,我一开始所做的选择没有被保存(这意味着没有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 的 List,值为 checkedId
有人对这个问题有什么建议吗?
谢谢
【问题讨论】:
-
这可能是由于您的
RadioGroup在您滚动时被回收。 Check out this answer. -
正如我已经指定的那样,我已经知道是什么原因,我需要的是一个有效的解决方案。我检查了您链接的答案,但我不明白这一点。你可以说得更详细点吗?谢谢
标签: android radio-button listitem radio-group