recyclerView插入(add)和刪除(remove)item后,item錯亂,重復,覆蓋在原recyclerView上


項目用到,實現一個recyclerView列表的item翻轉動效,翻轉的同時會將指定item置頂。

(比如交換AB位置,A在0位置,指定的item B 在 i 位置)

原始使用的是插入B到0位置,然后移除B

dataList.add(0, bean);
mAdapter.notifyItemInserted(0);
mAdapter.notifyItemRangeChanged(0, dataList.size());
dataList.remove(bean);
mAdapter.notifyItemRemoved(i + 1);
if (i + 1 < dataList.size()) {
mAdapter.notifyItemRangeChanged(i + 1, dataList.size() - (i + 1));
}
 
        

這樣插入移除更新引起的問題即是recyclerView的item錯亂和重復,並且不是在recyclerView上的數據混亂,是在原recyclerView布局地方的上層或下層出現一塊重復了的item。emm,具體原因我也不清楚,反正能確定的就是這里remove+add引起的,然后修改成了直接將AB交換位置,解決問題。

                dataList.set(i, dataList.get(0));
                mAdapter.notifyItemChanged(i);
                if (i < dataList.size()) {
                    mAdapter.notifyItemRangeChanged(i, dataList.size() - (i));
                }
                dataList.set(0, bean);
                mAdapter.notifyItemChanged(0);
                mAdapter.notifyItemRangeChanged(0, dataList.size());

 


免責聲明!

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



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