操蛋,搞了这么久,其实很简单,先看UI进行分析。
最外层布局是recyclerview,选项又是一个recyclerview,如果都是多选,那就没有什么好说的了。
对于单选,在点击未选中的选项之前,将所有的选项去除选中状态,这就实现了单选。
如何去除所有的选项选中状态呢,我的思路就是获取到父布局的索引,遍历父布局的子项,去除所有的选中状态。
public class ExamModel extends BaseRecyclerModel { 这是父布局的model
public String type="1"; //1 单选 2 多选
public List optionList=new ArrayList<>(); //选项列表
}
public class ExamOption extends BaseRecyclerModel { 这是子布局
public int p_position;//父级索引
public String type;//父级类型
public boolean isCheck=false; //默认不被选中
public String optionName; //选项名称
}
/**
* 清空选项选中的子项
* @param option
*/
@Subscribe(threadMode = ThreadMode.MainThread)
public void onMessageEvent(ExamOption option) {
try {
int p_position = option.p_position;
if(modelList.size()>=p_position+1){
BaseRecyclerModel model = modelList.get(p_position);
if(model instanceof ExamModel){
for(ExamOption examOption:((ExamModel) model).optionList){
examOption.isCheck=false;
}
}
}
adapter.notifyDataSetChanged();
}catch (Exception e){
LogUtil.getInstance().e(e.getMessage()+"");
}
};