07-09|07-09 RecycleView 简单使用三 (实现单选/多选模式)

在开发过程中RecycleView实现单选效果场景还是比较多 (支付.礼物 什么什么的等等) 今天就总结整理下我在项目中单选是如何实现的.
能力有限,如有不足,希望多多指教! 主要知识点:

1. 设置标示 (让程序明白 我是不是改设置此项为选中状态) 2. 局部更新 (避免 闪屏,无效渲染)

PS:加载基础列表/网格等实现有问题的同学可参考我之前的文章补充.
单选:
第一步: 在实体类中添加字段isSelect (字段名随意) 第二步: 填充数据时 根据此字段 作出相应逻辑 例如显示隐藏等.
if (item.isSelected) { helper.getView(R.id.iv_gift_select).setVisibility(View.VISIBLE); } else { helper.getView(R.id.iv_gift_select).setVisibility(View.GONE); }

第三步:完成局部更根
@Override public void onBindViewHolder(@NonNull BaseViewHolder holder, int position, @NonNull List payloads) { if (payloads.isEmpty()) { onBindViewHolder(holder, position); } else {LiveInfo bean = getItem(position); if (bean.isSelected) { holder.getView(R.id.iv_gift_select).setVisibility(View.VISIBLE); } else { holder.getView(R.id.iv_gift_select).setVisibility(View.GONE); } } }
第四步:OnItemClick 使用
@Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) {LiveInfo liveInfo = (LiveInfo) adapter.getItem(position); liveInfo.isSelected = true; if (oldPosition != -1) { LiveInfo oldInfo = (LiveInfo) adapter.getItem(oldPosition); oldInfo.isSelected = false; adapter.notifyItemChanged(oldPosition, "1"); } adapter.notifyItemChanged(position, "1"); oldPosition = position; }

多选:
多选提供思路:
1.不需要记录原来选中位置
@Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) {LiveInfo liveInfo = (LiveInfo) adapter.getItem(position); liveInfo.isSelected = true; // 第二参数不为空即可,原因在下章局部更新介绍会介绍 adapter.notifyItemChanged(position, "1"); }

2.获取选中状态 【07-09|07-09 RecycleView 简单使用三 (实现单选/多选模式)】便利数据集合拿出所有标示为true 的即为全部选中集合.
07-09|07-09 RecycleView 简单使用三 (实现单选/多选模式)
文章图片
单选.png

    推荐阅读