問題:加載更多用notifyDataSetChanged()刷新圖片閃爍windows
緣由:notifyDataSetChanged()會致使整個itemview刷新,已經測試:相同position刷新其itemview是不一樣的對象,例如,刷新後,position爲12的用了position爲13的itemview,再次刷新時,又用了position爲10的itemview,這樣次position上對應的itemview的ImageView就會在重設size時發生閃爍,此現象是能夠用肉眼看到的。網絡
解決方法:測試
用notifyItemRangeInserted()進行增長數據使用的局部刷新,這樣原先的itemview就不會重繪動畫
或者用notifyItemRangeChanged() 進行單純的局部刷新spa
注意:雖然方法是用來局部刷新的,但咱們能夠把局部刷新變成所有刷新,itemCount設成list.size()就能夠實現不閃爍的所有刷新了,但最好加上這一句((SimpleItemAnimator)imagesListView.getItemAnimator()).setSupportsChangeAnimations(false);取消RecyclerView的動畫效果,否則刷新的話的確不會快閃但會有個動畫效果,體驗也是不怎麼好的。.net
我在項目中使用了:對象
項目場景: 加載網絡圖片 進行點擊刷新 調用時習慣性調用notifyDataSetChanged() 而後出現閃爍狀況,圖片越多閃爍越嚴重.blog
改進方法:圖片
1.先調用((SimpleItemAnimator)imagesListView.getItemAnimator()).setSupportsChangeAnimations(false); //取消RecyclerView的動畫效果get
2.刷新列表使用了mAdapter.notifyItemRangeChanged(0,imageList.size()); //進行列表所有刷新
很完美的解決了。
參考:1.RecyclerView實現瀑布流遇到的各類問題(item移動,加載更多圖片閃爍,以及定製各類類型Header和Footer)