Android 解決RecyclerView刪除Item導致位置錯亂的問題


RecyclerView的刷新分為內容變化和結構變化,結構變化比如remove和insert等並不會導致viewholder的更新,所以有時候我們使用

 notifyItemRemoved(position);

或者使用

 notifyItemInserted(position);

item的位置並沒有發生改變,或者位置發生錯亂,很是奇怪詭異,需要重新調用

 notifyDataSetChanged();

才能刷新整個List每個Item的位置,但這樣做會使得RecyclerView增加和刪除的動畫效果沒有了。那么要既想沒有Bug的插入刪除,又想有動畫怎么搞呢,只需要刷新刪除位置以下的List的Item位置即可,那么幸虧RecyclerView有一個局部刷新的方法:

notifyItemRangeChanged(int positionStart, int itemCount)

怎么使用呢? 
我們只需要在刪除或插入時同時,刷新改變位置item下方的所有Item的位置: 
插入動作:

notifyItemInserted(position);
if (position != mData.size()) {
   otifyItemRangeChanged(position, mData.size() - position);
 }

刪除動作:

 notifyItemRemoved(position);
if (position != mData.size()) {
   otifyItemRangeChanged(position, mData.size() - position);
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM