【问题标题】:Animate item-swap in RecyclerViewRecyclerView 中的动画项目交换
【发布时间】:2015-02-03 10:19:03
【问题描述】:

我已经实现了一个带有适配器和所有东西的回收器视图。我可以用

反转项目列表
Collections.reverse(items);

然后遍历列表来通知适配器这个变化

final int end = items.size() - 1;
for (int i = 0; i < end; i++) {
    mAdapter.notifyItemMoved(0, end - i);
}

到目前为止一切顺利。我现在要做的是交换该列表中的两个项目并为这个更改设置动画。

Collections.swap(items, 5, 8);

mAdapter.notifyItemMoved(5, 8);
mAdapter.notifyItemMoved(8, 5);

问题是,这不是动画,我找不到原因。

我确实想要类似于简单反向动画的东西。

有什么想法吗?

【问题讨论】:

  • 它在 LogCat 上给你一些错误?
  • 没有错误。交换只是在没有动画的情况下工作。 ArrayList 被重新排序,我可以在 UI 上看到它。

标签: android android-recyclerview


【解决方案1】:

在我写完这篇文章后不久,我又破解了一点,找到了原因。事实证明,我的问题确实与以下线程有关:

No animation on item removal on RecyclerView

我确实搞砸了我的 notifyDataSetChanged() 和 notifyItemMoved(0, 1) 调用。调用 notifyDataSetChanged() 后,项目将在没有动画的情况下进行交换,并且 notifyItemMoved 没有任何效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多