2016-10-31 2 views
0

У меня есть 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

Как-нибудь есть какие-либо предложения по этому вопросу?

Благодаря

+0

Возможно, это связано с тем, что ваша «радиогруппа» перерабатывается при прокрутке. [Проверьте этот ответ.] (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- слушатель в RadioGroup/сброс выбранного идентификатора, когда и вкладка на нем

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> 
Смежные вопросы