RecyclerVier的Adapter中的itemXXX方法浅层使用

本文介绍了RecyclerView中两种常用的刷新方法:notifyDataSetChanged()与notifyItemInserted()。notifyDataSetChanged()会通知所有观察者数据集发生变化,可能导致全部视图重新绑定和布局;而notifyItemInserted()则仅通知指定位置插入了新项,效率更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RecyclerView的Item浅层使用方法

1.notifyItemInserted(int position)

msgList.add(new Msg());
adapter.notifyItemInserted(msgList.size()-1);

只需要对adapter的数据列表进行操作,再使用notifyItemInserted(),即可刷新recyclerview的视图

2.notifyDatasetChanged();

//获得adaptr的数据列表,并操作
newsAdapter.getNewsArrayList().remove(selectedItemNumber);
//刷新视图
newsAdapter.notifyDataSetChanged();

源码解析:

/**
         * 通知任何已注册的观察者数据集已更改。
         * 有两种不同类别的数据更改事件,项目更改和结构更改。 项目更改是指单个项目的数据已更新但未发生位置更改。 结构变化是指在数据集中插入、删除或移动项目。
         * 此事件未指定数据集发生了什么变化,迫使任何观察者假设所有现有项目和结构可能不再有效。 LayoutManagers 将被迫完全重新绑定和重新布局所有可见视图。
         * 当使用此方法时, RecyclerView将尝试为报告它们具有stable IDs适配器合成可见的结构更改事件。 这有助于实现动画和视觉对象持久性,但仍需要重新分配和重新布局单个项目视图。
         * 如果您正在编写适配器,如果可以的话,使用更具体的更改事件总是更有效。 依靠notifyDataSetChanged()作为最后的手段。
         * 也可以看看:
         * notifyItemChanged(int) , notifyItemInserted(int) , notifyItemRemoved(int) , notifyItemRangeChanged(int, int) , notifyItemRangeInserted(int, int) , notifyItemRangeRemoved(int, int)
         */


public final void notifyDataSetChanged() {
            mObservable.notifyChanged();
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值