Adapter刷新时,列表中ImageView闪烁

来源:互联网 发布:新日铁住金软件 待遇 编辑:程序博客网 时间:2024/06/05 05:31

应用场景:图片列表,数据发生改变调用 adapter.notifyDataSetChanged()时,图片重新加载导致闪烁抖动。

原因:notifyDataSetChanged()会重新加载数据

解决方案:图片地址未发生改变时,不需要重新加载,通过设置setTag()的方式判断数据是否发生改变,从而决定是否重新记载,不重新加载就不会发生闪烁

eg:
未处理前

 Item item = list.get(position); ImageLoader.display(item.getImage(), holder.image);

处理后

Item item = list.get(position);if(!item.getImage().equals(holder.image.getTag())){     ImageLoader.display(item.getImage(), holder.image);     holder.image.setTag(item.getImage());}

But……………然并卵

listView滑动时因为Holder的重用(没有使用相同的ViewHolder)导致图片显示错误
解决办法:
使用RecycleView
使用RecycleView的notifyItemRangeChanged(int positionStart, int itemCount)局部刷新取代notifyDataSetChanged(),同时设置((SimpleItemAnimator)recycleView.getItemAnimator()).setSupportsChangeAnimations(false);取消动画效果

原创粉丝点击