RecyclerView包含RadioButton导致check混乱

657 阅读1分钟

在onBindViewHolder方法中:

//---RadioGroup 的处理开始------------------------------
    //1.先取消对其监听
    h1.rg.setOnCheckedChangeListener(null);
    //2.先清空所有选项
    h1.rg.clearCheck();
    //3.根据选择情况显示选择答案
    switch (list.get(position).getCheckedNum()) {
        case 1:
            h1.rg.check(R.id.r_1);
            break;
        case 2:
            h1.rg.check(R.id.r_2);
            break;
        case 3:
            h1.rg.check(R.id.r_3);
            break;
        case 4:
            h1.rg.check(R.id.r_4);
            break;
        default:
            break;
    }
    //4.重新注册监听
    h1.rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            int p=0;
            switch (checkedId){
                case R.id.r_1:
                    p=1;
                    break;
                case R.id.r_2:
                    p=2;
                    break;
                case R.id.r_3:
                    p=3;
                    break;
                case R.id.r_4:
                    p=4;
                    break;
            }
            //把选择了的答案记录回到ListView的集合中,以便滑动时给对应的RadioGroup赋值
            list.get(position).setCheckedNum(p);
            //测试选择答案正确性
            for(Title title:list){
                if(title.getCheckedNum()>0)
                    Log.e("TAG",title.getTITLE()+"---"+title.getCheckedNum());
            }
        }
    });
    //--------RadioGroup 的处理结束--------------