RecyclerView删除方法notifyItemRemoved的坑
RecyclerView删除方法notifyItemRemoved的坑
fantasiter 发表于2年前
RecyclerView删除方法notifyItemRemoved的坑
  • 发表于 2年前
  • 阅读 3643
  • 收藏 1
  • 点赞 0
  • 评论 1

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: RecyclerView notifyItemRemoved

平常我们删除列表的某个Item的时候,一般是先调用List的remove方法,然后通过notifyDataSetChanged来刷新列表.代码如下:


    //这种删除并刷新的方法是没有动画效果的
    @Override
    public void onBindViewHolder(final GoogleViewHolder holder, final int position) {
        final ItemBean item = items.get(position);
        holder.buttonRecyclerDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    items.remove(position);
                    notifyDataSetChanged();
                   }
            });
    }

然而RecyclerView自带notifyItemRemoved方法不仅可以实现删除功能,而且还有动画效果. 然而并没有完,假如仅仅调用notifyItemRemoved的话,删除会出很多问题,比如:点击删除position = 1的Item,实际删除的是下一个,所以我们需要这么做,加上notifyItemRangeChanged这个方法,更新一下列表:


      @Override
    public void onBindViewHolder(final GoogleViewHolder holder, final int position) {
        final ItemBean item = items.get(position);
        holder.buttonRecyclerDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    items.remove(position);
                    notifyItemRemoved(position);
                    notifyItemRangeChanged(position, getItemCount());
                }
            });
    }

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 115
码字总数 24535
评论 (1)
真永远ddd
快速删除还是有问题
终极解决办法
http://blog.csdn.net/iamdingruihaha/article/details/73274010
×
fantasiter
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: