2016-10-31 56 views
0

我有一個ListView幾個項目,以便這些將在滾動期間被重新使用。 一個項目由幾個TextViews和一個RadioGroup組成,其中包含3個RadioButtons在列表中記住RadioButton的選定狀態

我遇到的問題是,當我爲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,值列表中的checkedId

由於任何人有任何建議,這個問題?

感謝

+0

這可能是由於當您滾動時您的RadioGroup被回收。 [看看這個答案。](http://stackoverflow.com/questions/2937581/android-how-to-make-radiogroup-work-correctly-in-a-listview) –

+0

正如我已經指定,我已經知道什麼是因爲,我需要的是一個有效的解決方案。我檢查了你鏈接的答案,但我沒有明白。你可以說得更詳細點嗎?謝謝 – carlodonz

回答

0

可能需要所有的人宣佈爲獨立的RadioGroup中選擇其中的每個項目。我希望它能幫助你。

由於

+0

你能更具體嗎? – carlodonz

0

您需要三樣東西

1-列表以各RadioGroup中

2-甲收聽者的選擇的ID存儲在RadioGroup中設置/當u選項卡重置所選擇的ID它

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>