大飞

大飞 关注TA

挑战一切!

大飞

大飞

关注TA

挑战一切!

  •  世界的顶端
  • 混口饭吃
  • 写了333,609字

该文章投稿至Nemo社区   Android  板块 复制链接


android recyclerview中实现单选和多选

发布于 2017/03/11 15:30 3,355浏览 0回复 1,335

     操蛋,搞了这么久,其实很简单,先看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()+"");
          }
    };
本文标签
 {{tag}}
点了个评