为什么Glide在notifydataset改变时会使项目ImageView闪烁

我正在使用Glide 3.7.0与RecyclerView 。 项目视图总是在刷新时闪烁(调用notifyDataSetChanged )。

这是我的代码:

 Glide .with(context) .load(filepath) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .dontAnimate() .into(imageview); 

当我使用没有caching时,当notifyDataSetChanged方法时, ImageView有一个notifyDataSetChanged图,并且Glide还没有完成加载位图。

如果我使用下面的代码:

 Glide .with(context) .load(filepath) .dontAnimate() .into(imageview); 

然后,项目ImageView不再闪烁(使用caching)。

我想dynamic更新项目视图,所以我禁用滑动caching。

有没有解决这个眨眼错误的解决scheme?

非常感谢你!

Solutions Collecting From Web of "为什么Glide在notifydataset改变时会使项目ImageView闪烁"

经过多次尝试,只需使用SimpleTarget解决了我的问题,谢谢!

 Glide .with(context) .load(filepath) .asBitmap() .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .dontAnimate() .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap arg0, GlideAnimation<? super Bitmap> arg1) { // TODO Auto-generated method stub holder.mItemView.setImageBitmap(arg0); } }); 

在我的情况下,我通过在我的imageView上使用定义的尺寸解决了这个问题。

 <ImageView android:id="@+id/poster_imageview" android:layout_width="130dp" android:layout_height="183dp" android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@drawable/placeholder" /> 

从版本3更新滑动到4,为RecyclerView setSupportsChangeAnimations(false)解决了我的问题

 RecyclerView.ItemAnimator animator = recyclerView.getItemAnimator(); if (animator instanceof SimpleItemAnimator) { ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); }