2014-12-05 33 views
0

我在一個新的應用程序中實現了RecyclerView和CardView,其中我在前L次使用了一個ListView。當我訴諸收集,說:Animate RecyclerView項目當訴諸底層集合

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

這工作正常,但我需要動畫顯示用戶這些變化。

有沒有簡單的方法來做到這一點?如果不是的話,你能否指出我正確的做法?

回答

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知道當第一個項目移動到列表的末尾時,下一個項目是第一個,依此類推。

這將有相同的效果與做手動反轉。

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)