android – RecyclerView – 如何同时更新和移动项目

前端之家收集整理的这篇文章主要介绍了android – RecyclerView – 如何同时更新和移动项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个由SortedList支持的RecyclerView适配器.如果我对某个项目进行了更改,它将更改该项目并将其重新定位到列表中.

我发现如果我在项目的起始位置或结束位置使用notifyItemChanged,它甚至在与notifyItemMoved一起使用之前或之后似乎都没有任何效果.

如果我使用notifyItemMoved,它会正确触发移动动画,但视图不会更改,仍会显示过时的信息.

如果我使用notifyDatasetChanged它会更新行然后移动它,但它按顺序执行,这很慢,它显然会通知整个列表,这是不完全合乎需要的.

有什么方法可以结合移动和更新动画吗?为什么notifyItemChanged什么都不做?

解决方法

RecyclerView.Adapter reference中说,notifyItemMoved()只是结构上的变化,因此不会更新数据.另一方面,notifyItemChanged()据说是数据更改.

调用notifyItemChanged()时,它将调用RecyclerView#onBindViewHolder(),因此它应该更新您的视图.

我更新和移动的工作方法是:

notifyItemChanged(oldPos); notifyItemMoved(oldPos,newPos);

猜你在找的Android相关文章