我在一個新的應用程序中實現了RecyclerView和CardView,其中我在前L次使用了一個ListView。當我訴諸收集,說:Animate RecyclerView項目當訴諸底層集合
Collections.reverse(items);
adapter.notifyDataSetChanged();
這工作正常,但我需要動畫顯示用戶這些變化。
有沒有簡單的方法來做到這一點?如果不是的話,你能否指出我正確的做法?
我在一個新的應用程序中實現了RecyclerView和CardView,其中我在前L次使用了一個ListView。當我訴諸收集,說:Animate RecyclerView項目當訴諸底層集合
Collections.reverse(items);
adapter.notifyDataSetChanged();
這工作正常,但我需要動畫顯示用戶這些變化。
有沒有簡單的方法來做到這一點?如果不是的話,你能否指出我正確的做法?
如果你有穩定的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項目,並在每個項目的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)