我在新的应用程序中实现了RecyclerView和CardView,我在前L次使用过ListView。当我使用该系列时,请说:
Collections.reverse(items);
adapter.notifyDataSetChanged();
这很好但我需要动画向用户显示这些更改。
有没有简单的方法可以做到这一点?如果没有,你能指出我做正确的方法吗?
答案 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)