android - 清除整个适配器并添加新元素时的 RecyclerView 动画

标签 android android-animation android-recyclerview

想象一下,一开始我们在 RecyclerView 中加载了 10 个项目。添加或删除一个元素为我们提供了一个漂亮的动画(适配器具有稳定的 ID)。

问题是,我有一个搜索栏,我可以查找一些东西,然后结果应该替换 RecyclerView 的当前项目。如果某个项目已经存在,则会有一个漂亮的“移动”动画。但是,如果所有项目都是新的,则会有一个非常丑陋的淡入过渡,它太快并且看起来像一个小故障。是否可以覆盖该动画?我想要一个淡出淡入但速度较慢的淡出淡入。

顺便说一下,当查询返回结果时,我在适配器中这样做:

mItems.clear();
mItems.addAll(resultItems);
notifyDataSetChanged();

此外,值得一提的是,如果我进行搜索但没有结果,那么我会看到 RecyclerView 是空的,然后如果我再次获得一些结果,从空状态到一些结果的转换看起来没问题。

最佳答案

您可以在 RecyclerView 中批量删除和插入项目。

adapter.notifyItemRangeRemoved(0, mItems.size());
mItems.clear();
mItems.addAll(resultItems);
adapter.notifyItemRangeInserted(0, mItems.size());

编辑:在进一步查看您的问题之后,您可能不想按照我上面的建议进行操作。相反,您不应该清除列表,而是删除一些项目,然后使用 notifyItemRemove(index)

将更改通知适配器

关于android - 清除整个适配器并添加新元素时的 RecyclerView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700531/

相关文章:

java - 动画器只能在 Looper 线程 Android 上运行

javascript - React Native 如何并排制作两个 View 的动画

android - 如何删除/删除 PagedListAdapter 项目

java - 云加速 : Unable to log out (android/Java)

c# - UDP 代码故障排除

java - 无法从 xml 文件膨胀relativelayout

android - 如何在像谷歌加/谷歌报摊这样的滚动上为回收站设置动画?

android - 如何防止recyclerview在 fragment onResume中自动滚动到顶部

java - 如何根据 Firebase 中帖子的点赞数对 Android 中的 RecyclerView 中的数据进行排序?

Android:SwipeListView 点击