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<Object> 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.获取选中状态

便利数据集合拿出所有标示为true 的即为全部选中集合.

单选.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,686评论 25 708
  • 他抬起疲惫的双眼,眼里却是揉碎的满足。“一盏灯,足矣。” ——题记 我不知道这种感觉从何而来,也不知从什么时候开始...
    小水曦阅读 444评论 0 1
  • 老吉米阅读 157评论 0 2
  • 不知不觉,还是躲不过奇怪的520,该来的还是躲不掉的。从小就是一个剪不断理还乱的人,这么久了,也没有整清楚感情究竟...
    采风JS阅读 740评论 1 44