RadioGroup.getCheckedRadioButtonId()
это путь. В сочетании с SparseArray<Integer>
.
In onBindViewHolder()
: для каждой радиогруппы установите RadioGroup.OnCheckedChangeListener()
. Добавьте проверенное состояние в a SparseArray
или Map<Integer,Integer>
, сопоставляя индекс позиции элемента с обновленным значением в RadioGroup.OnCheckedChangeListener()
onCheckedChanged
.
Таким образом, ваш onBindViewHolder будет выглядеть примерно так:
private SparseArray<Integer> mMapping = new SparseArray<>();
public void onBindViewHolder(@NonNull final PreguntaAdapter.ViewHolder viewHolder,final int position) {
final VistaEncuestaActivity.PreguntasSiNo currentPregunta = preguntas.get(i);
//viewHolder.pregunta.setText(currentEncuesta.getString_pregunta());
viewHolder.pregunta.setText(currentPregunta.getQuestion());
viewHolder.myLinearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
viewHolder.radio_group.setOnCheckedChangeListener(new OnCheckedChangeListener(){
void onCheckedChanged(RadioGroup group,int checked) {
mMapping.put(position,checked);
}
}};
// Check to see if a previous checked value exists and restore.
if(mMapping.get(position) != null && mMapping.get(position) != -1){
radio_group.check(mMapping.get(position));
}
viewHolder.setIsRecyclable(false);
}
onCheckedChanged(RadioGroup group, int checkedId)
Вы должны дать каждому RadioButton уникальный идентификатор, например radioButton_1, radioButton_2, в файле макета.