在使用基础集合时动画RecyclerView项目

时间:2014-12-05 14:14:18

标签: android android-recyclerview

我在新的应用程序中实现了RecyclerView和CardView,我在前L次使用过ListView。当我使用该系列时,请说:

            Collections.reverse(items);
            adapter.notifyDataSetChanged();

这很好但我需要动画向用户显示这些更改。

有没有简单的方法可以做到这一点?如果没有,你能指出我做正确的方法吗?

2 个答案:

答案 0 :(得分:1)

如果你有稳定的ID,你可以运行:

Collections.reverse(items);
adapter.notifyDataSetChanged();

会给你“一些”动画。您可以这样做以获得更高效和逼真的动画:

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

没有测试代码但应该是正确的。基本上,对于除最后一个项目之外的每个项目,您将向列表末尾的第一个项目发送移动事件。请注意,第一个参数始终为0,因为RecyclerView知道当第一个项目移动到列表末尾时,下一个项目是第一个,依此类推。

这与手动反转具有相同的效果。

答案 1 :(得分:0)

尝试一次反转集合1项目,并在RecyclerView.Adapter中为每个项目调用其中一种方法。

final void  notifyItemInserted(int position)
final void  notifyItemMoved(int fromPosition, int toPosition) //I guess this one?
final void  notifyItemRangeChanged(int positionStart, int itemCount)changed.
final void  notifyItemRangeInserted(int positionStart, int itemCount)
final void  notifyItemRangeRemoved(int positionStart, int itemCount)
final void  notifyItemRemoved(int position)