Я делаю приложение типа анкеты в Android Studio, и у меня есть ListView, содержащий элементы с одним TextView для вопроса и RadioGroup с тремя RadioButton для трех ответов, каждый. Всякий раз, когда я выбираю одну кнопку в одном из элементов, позже в списке, выбираются также все несколько кнопок. Я провел небольшое исследование и обнаружил, что эта проблема возникает из-за повторного использования адаптера, но я понятия не имею, как я мог бы решить эту проблему. Есть идеи?
Вот моя реализация адаптера:
package com.aronniki.bolyaiprojektv1;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.RadioGroup;
import android.widget.TextView;
public class TesztAdapter extends BaseAdapter {
static class ViewHolderItem
{
TextView textViewItem;
RadioGroup radioGroupItem;
}
private final Context mContext;
private final String[] questions;
private final String[] valaszok;
public TesztAdapter(Context mContext, String[] questions, String[] valaszok) {
this.mContext = mContext;
this.questions = questions;
this.valaszok = valaszok;
}
@Override
public int getCount() {
return questions.length;
}
@Override
public Object getItem(int position) {
return questions[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderItem viewHolderItem;
if(convertView == null) {
final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
convertView = layoutInflater.inflate(R.layout.layout_teszt, parent, false);
viewHolderItem = new ViewHolderItem();
viewHolderItem.textViewItem = convertView.findViewById(R.id.teszt_kerdes);
viewHolderItem.radioGroupItem = convertView.findViewById(R.id.teszt_group);
convertView.setTag(viewHolderItem);
}
else {
viewHolderItem = (ViewHolderItem) convertView.getTag();
}
viewHolderItem.textViewItem.setText((String)getItem(position));
viewHolderItem.textViewItem.setTag(position);
return convertView;
}
}