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

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

07-09 RecycleView 简单使用三 (实现单选/多选模式)_第1张图片
单选.png

你可能感兴趣的:(07-09 RecycleView 简单使用三 (实现单选/多选模式))