简体   繁体   English

在Listview中使用RadioGroup滚动问题?

[英]Scrolling issues using RadioGroup in Listview?

In My activity which contain on List view. 在包含在列表视图中的我的活动中。 Listview row contain one Textview and three Radiobutton in RadioGroup. Listview行在RadioGroup中包含一个Textview和三个Radiobutton。 when i select first radiobutton in first row after scrolling listView after ten (10) row the first radiobutton automatically selected appear.this will happen after every ten(10) row i don't know how? 当我在滚动十张(10)行后的listView后在第一行中选择第一个单选按钮时,将自动选择第一个单选按钮出现。这将在每十(10)行之后发生,我不知道如何?

CustomAdapter class 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;
    }
}

please any one help me thanks in advance. 请任何人先谢谢我。

Your view holder will keep view state. 您的视图持有者将保持视图状态。 For each item you have to keep data by and array in adapter or put to item object data. 对于每个项目,您必须将数据和数组保留在适配器中,或放入项目对象数据中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM