私はListView
にいくつかの項目があり、スクロール時に再利用されます。 アイテムは、TextViews
とRadioGroup
の2つで構成され、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
は、誰もがこの問題にどんな提案を持っていると値、checkedId
キーquestionID
とリストのですか?あなたは、各項目のためにそれらを選択するために、別々のRADIOGROUPにそれらのすべてを宣言する必要があるかもしれません
おかげ
おそらく、あなたがスクロールするときに 'RadioGroup'がリサイクルされているためです。 [この回答を確認してください](http://stackoverflow.com/questions/2937581/android-how-to-make-radiogroup-work-correctly-in-a-listview) –
私がすでに指定したように、私はすでに私が必要とするのは効率的な解決策です。あなたがリンクした答えをチェックしましたが、私はその点を得ていません。あなたはもっと具体的になりますか?ありがとう – carlodonz