侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

RecyclerView删除方法notifyItemRemoved的坑

2024-05-15 星期三 / 0 评论 / 0 点赞 / 93 阅读 / 1570 字

平常我们删除列表的某个Item的时候,一般是先调用List的remove方法,然后通过notifyDataSetChanged来刷新列表.代码如下: //这种删除并刷新的方法是没有动画效果的

平常我们删除列表的某个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());                }            });    }

广告 广告

评论区