2016-10-31 10 views
0

私はListViewにいくつかの項目があり、スクロール時に再利用されます。 アイテムは、TextViewsRadioGroupの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にそれらのすべてを宣言する必要があるかもしれません

おかげ

+0

おそらく、あなたがスクロールするときに 'RadioGroup'がリサイクルされているためです。 [この回答を確認してください](http://stackoverflow.com/questions/2937581/android-how-to-make-radiogroup-work-correctly-in-a-listview) –

+0

私がすでに指定したように、私はすでに私が必要とするのは効率的な解決策です。あなたがリンクした答えをチェックしましたが、私はその点を得ていません。あなたはもっと具体的になりますか?ありがとう – carlodonz

答えて

0

。それがあなたを助けることを願っています。

おかげ

+0

あなたはより具体的になることができますか? – carlodonz

0

あなたはUがタブ選択されたIDをセット/リセットするRADIOGROUPに各RADIOGROUP

2 - リスナーの選択IDを保存するために三つのこと

の1-リストを必要としますその上

、3-ビューを作成するときにこのリストをチェックして、あなたがリスナーに保存されたアイテムを選択するアダプタ

+0

私はこれを行いました。問題は、スクロールしてラジオボタンをチェックすると、onCheckedListenerも呼び出され、別のアイテムの現在の値も設定されるということです。 – carlodonz

+0

リスナーとアダプターのコードを投稿 –

+0

申し訳ありません、今すぐ更新しました – carlodonz

0

のために例:

<RadioGroup 
    android:id="@+id/group" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"> 
    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Standard Taxi (upto 4 passengers)" 
     android:id="@+id/standardTaxi" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" 
     android:onClick="radio" 
     android:checked="true" /> 

    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Wagon(upto 4 passengers)" 
     android:id="@+id/wagon" 
     android:layout_below="@+id/standardTaxi" 
     android:layout_alignParentStart="true" 

     android:onClick="radio" 
     android:checked="false" /> 

    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Wheelchair Accessible Taxi" 
     android:id="@+id/wheelchair" 
     android:layout_below="@+id/wagon" 
     android:layout_alignParentStart="true" 
     android:onClick="radio" 

     android:checked="false" /> 

    <RadioButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Van/Maxi(5-11 passengers)" 
     android:id="@+id/van" 
     android:layout_centerVertical="true" 
     android:onClick="radio" 
     android:layout_alignParentStart="true" 
     android:checked="false" /> 
</RadioGroup> 
関連する問題