问题:加载更多用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)