1首先说一Recyclerview中RadioGroup 出现点几一条直接下拉出现多个选中的情况
解决方法如下
// 在适配器中获取到你得到RadioGroup
RadioGroup radioButton = helper.getView(R.id.redioFroup);
//为获取到你得到RadioGroup中小圆点,点击的时候的监听方法进行一个制空
/*
* setOnCheckedChangeListener 底层其实还是走了setCheckedId(@IdRes int id) 此方法
* @IdRes是什么我也不知道
* 但可以看出你的checked 其实就是你RadioGroup 中的id
* */
radioButton.setOnCheckedChangeListener(null);
//为你的Bean中的checked 进行判断 并把id的值给到他们身上
radioButton.clearCheck();
// item是我Bean对象中的 你可以在 Bean 中声明 int checked;
// 也就是说 自己在对象中写一个 int checked
switch (item.checked){
case 1:
radioButton.check(R.id.shang);
break;
case 2:
radioButton.check(R.id.next);
break;
}
//方法是从上往下走的 到这边真正的进行监听
radioButton.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
//为他们附上自己的标记 以防标记错乱所以不能给一样的标记
switch (checkedId){
case R.id.shang:
item.checked=1;
break;
case R.id.next:
item.checked=2;
break;
}
}
});
2ListView
//取消监听器,防止RadioGroup显示混乱 关键代码 holder.mRadioGroup.setOnCheckedChangeListener(null);
switch (itemBean.checked) {
case 1: holder.mRadioGroup.check(R.id.item_deal_setting_radioBtn1);
break;
case 2: holder.mRadioGroup.check(R.id.item_deal_setting_radioBtn2);
break;
case 3: holder.mRadioGroup.check(R.id.item_deal_setting_radioBtn3);
break;
default: holder.mRadioGroup.clearCheck();
break;
}
holder.mRadioGroup.setId(position);
holder.mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){ @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { DealSettingBean bean = mData.get(group.getId()); switch (checkedId) {
case R.id.item_deal_setting_radioBtn1:
bean.checked = 1;
break;
case R.id.item_deal_setting_radioBtn2:
bean.checked = 2;
break;
case R.id.item_deal_setting_radioBtn3:
bean.checked = 3;
break;
}
} });