我有一个自定义Listview,如下图所示。但是要选择第一个radiobutton,也选择滚动结束后的那个,根据eh读取,即通过使用android回收视图。我尝试了几种解决方案,但我没有成功..如果有人一直想看看我是否可以提供帮助..这是我的Apadapter的代码你看看..干杯...... !!
链接图片> http://sia1.subirimagenes.net/img/2014/11/10/141110041729113463.jpg
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.list_single, null, true);
ViewHolder viewHolder = new ViewHolder();
viewHolder.pregunta = (TextView) rowView.findViewById(R.id.texto_pregunta);
viewHolder.rdo1 = (RadioButton) rowView.findViewById(R.id.radio0);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
holder.pregunta.setText((position + 1) + ".- " + desc.get(position));
holder.rdo1.setText(minimo.get(position));
return rowView;
}
public static class ViewHolder {
public TextView pregunta;
public RadioButton rdo1;
public RadioButton rdo2;
public RadioButton rdo3;
}
答案 0 :(得分:1)
感谢那些回复的人。阅读我收到的回复,我找到了解决方案。
如果他们遇到与我相同的问题,我会让我的适配器使用它。
public class CustomList extends ArrayAdapter<String> {
private final Activity context;
private final ArrayList<String> minimo;
private final ArrayList<String> maximo;
private ArrayList<Boolean> status = new ArrayList<Boolean>();
public CustomList(Activity context, ArrayList<String> min, ArrayList<String> max) {
super(context, R.layout.list_single, min);
this.context = context;
this.minimo = min;
this.maximo = max;
//initialize all with false
for (int i = 0; i < minimo.size(); i++) {
status.add(false);
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View rowView = convertView;
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.list_single, null, true);
ViewHolder viewHolder = new ViewHolder();
viewHolder.pregunta = (TextView) rowView.findViewById(R.id.texto_pregunta);
viewHolder.rdo1 = (RadioButton) rowView.findViewById(R.id.radio0);
rowView.setTag(viewHolder);
ViewHolder holder = (ViewHolder) rowView.getTag();
holder.pregunta.setText("Some Text Answer");
holder.rdo1.setText(minimo.get(position));
holder.rdo1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//change status when clicked
status.set(position, isChecked);
//verified status all radiobuttons
for (int i = 0; i < status.size(); i++) {
Log.v("Log", "" + status.get(i));
}
}
});
holder.rdo1.setChecked(status.get(position));
return rowView;
}
public static class ViewHolder {
public TextView pregunta;
public RadioButton rdo1;
public RadioButton rdo2;
public RadioButton rdo3;
}
}
答案 1 :(得分:0)
您可以将选中的值存储在模型中。我看到您使用列表来存储一些数据,因此您还可以创建一个带有选中的列表,然后在getView
方法中使用它:
private ArrayList<Boolean> checked;
holder.rdo1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checked.set(position, isChecked);
}
});
holder.rdo1.setChecked(checked.get(position));