вы должны использовать хеш-карту от имени каждого щелчка переключателя в одной и той же группе радиостанций. Эта проблема в основном из-за повторного использования вашего объекта Adapter.
Итак, вы должны сохранитьвыбранный элемент, как и вам следует проверять и обновлять, когда бы он ни вызывал метод getView в представлении.
вот код для ссылки: пожалуйста, следуйте и дайте мне знать:
открытый класс CustomArrayAdapterрасширяет BaseAdapter {
private Context context;
private ArrayList<HashMap<String, String>> data;
public CustomArrayAdapter(Context context,ArrayList<HashMap<String, String>> data) {
super();
this.context = context;
this.data = data;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.custom_questions, parent,false);
holder.textView1 = (TextView) convertView.findViewById(R.id.textView1);
holder.radioGroup1 = (RadioGroup) convertView.findViewById(R.id.radioGroup1);
holder.radio0 = (RadioButton) convertView.findViewById(R.id.radio0);
holder.radio1 = (RadioButton) convertView.findViewById(R.id.radio1);
holder.radio2 = (RadioButton) convertView.findViewById(R.id.radio2);
holder.radio3 = (RadioButton) convertView.findViewById(R.id.radio3);
convertView.setTag(holder);
}else{
holder =(ViewHolder) convertView.getTag();
}
holder.textView1.setText(data.get(position).get("questions"));
holder.radio0.setText(data.get(position).get("op1"));
holder.radio1.setText(data.get(position).get("op2"));
holder.radio2.setText(data.get(position).get("op3"));
holder.radio3.setText(data.get(position).get("op4"));
HashMap<Integer,String> radioMap = new HashMap<Integer, String>();
radioMap.put(holder.radio0.getId(),holder.radio0.getText().toString());
radioMap.put(holder.radio1.getId(),holder.radio1.getText().toString());
radioMap.put(holder.radio2.getId(),holder.radio2.getText().toString());
radioMap.put(holder.radio3.getId(),holder.radio3.getText().toString());
holder.radioGroup1.setTag(radioMap);
holder.radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
HashMap<Integer,String> data = (HashMap<Integer,String>) group.getTag();
Toast.makeText(context,data.get(checkedId),Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder{
TextView textView1;
RadioGroup radioGroup1;
RadioButton radio0;
RadioButton radio1;
RadioButton radio2;
RadioButton radio3;
}
}