gpt4 book ai didi

android - Recycler View 中的 swapadapter 方法和 notifydatasetchanged 方法有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:33 26 4
gpt4 key购买 nike

我想知道RecylerView的swapAdapter和notifyDatasetChanged方法到底有什么区别?修改数据时使用哪个更好?

最佳答案

如文档所述。

public void swapAdapter (Adapter adapter, boolean removeAndRecycleExistingViews)

用提供的适配器交换当前适配器。它类似于 setAdapter(Adapter),但假定现有适配器和新适配器使用相同的 RecyclerView.ViewHolder 并且不清除 RecycledViewPool。

请注意,它仍然会调用 onAdapterChanged 回调。

至于

public final void notifyDataSetChanged ()

通知所有已注册的观察者数据集已更改。

有两类不同的数据更改事件,项目更改和结构更改。项目更改是指单个项目的数据已更新但未发生位置更改。结构更改是指在数据集中插入、删除或移动项目。

此事件未指定数据集发生了什么变化,迫使任何观察者假设所有现有项目和结构可能不再有效。 LayoutManagers 将被迫完全重新绑定(bind)和重新布局所有可见 View 。

当使用此方法时,RecyclerView 将尝试为报告它们具有稳定 ID 的适配器合成可见的结构更改事件。这有助于实现动画和视觉对象持久性,但仍需要重新绑定(bind)和重新布局单个项目 View 。

如果您正在编写一个适配器,那么如果可以的话,使用更具体的更改事件总是会更有效。将 notifyDataSetChanged() 作为最后的手段。

好吧,我觉得文档很好地说明了区别所在,swapAdapter(ad,true) 是一种更改数据的方法,而 notifyDataSetChanged() 是一种通知适配器在数据更新后重绘其 View 的方法已更改。

关于android - Recycler View 中的 swapadapter 方法和 notifydatasetchanged 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com