在我的活动中包含列表视图。 Listview行在RadioGroup中包含一个Textview和三个Radiobutton。当我在十(10)行之后滚动listView之后在第一行中选择第一个radiobutton时,会自动选择第一个单选按钮出现。这会发生在每十(10)行后我不知道怎么回事?
CustomAdapter类
public class StudentAttendanceCustomAdapter extends BaseAdapter{
private Activity activity;
private LayoutInflater inflater;
private List<StudentDataReader> studentRecord;
private List<StudentDataReader> mOriginalValues;
public HashMap<String, String> radioMap;
private int mSelectedPosition = -1, radioButtonId;
public StudentAttendanceCustomAdapter(TeacherAttendanceActivity activity, List<StudentDataReader> studentList) {
this.activity = activity;
this.studentRecord = studentList;
this.mOriginalValues = studentList;
}
@Override
public int getCount() {
return studentRecord.size();
}
@Override
public Object getItem(int position) {
return studentRecord.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
static class ViewHolder{
TextView studentName;
RadioButton rb_p;
RadioButton rb_a;
RadioButton rb_l;
RadioGroup rg;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder hoder = new ViewHolder();
if (inflater == null)
{
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView == null){
convertView = inflater.inflate(R.layout.teacher_attendance_row,parent,false);
hoder.studentName = (TextView)convertView.findViewById(R.id.tv_attendance_studentName);
hoder.rg = (RadioGroup)convertView.findViewById(R.id.rg_1);
hoder.rb_p = (RadioButton)convertView.findViewById(R.id.radioButton_present);
hoder.rb_a = (RadioButton)convertView.findViewById(R.id.radioButton_absent);
hoder.rb_l = (RadioButton)convertView.findViewById(R.id.radioButton_leave);
convertView.setTag(hoder);
}else {
hoder = (ViewHolder)convertView.getTag();
}
final String str_studentId,str_studentName;
final StudentDataReader s = studentRecord.get(position);
hoder.studentName.setText(s.getStudentName());
str_studentId= s.getStudentId();
str_studentName = s.getStudentName();
hoder.rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int childCount = group.getChildCount();
for (int i = 0; i < childCount; i++) {
RadioButton radioButton = (RadioButton) group.getChildAt(i);
if (radioButton.getId() == checkedId) {
s.setPresent(radioButton.getText().toString());
notifyDataSetChanged();
}
}
}
});
return convertView;
}
}
请任何人提前帮助我。
答案 0 :(得分:0)
您的观看者将保持观看状态。对于每个项目,您必须将数据和数组保存在适配器中或放入项目对象数据。