Почему Glide мигает элементом ImageView, когда notifydatasetchanged

Я использую скользить 3.7.0 С RecyclerView. Вид элемента всегда мигает при обновлении (вызов notifyDataSetChanged).

вот мой код:

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

когда я не использую кэш,ImageView имеет нулевое растровое изображение, когда notifyDataSetChanged вызывается метод и Glide не закончил загрузку растрового изображения.

если я использую код ниже:

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

выберите пункт ImageView не мигать (через кэш).

Я хочу обновить элемент посмотреть динамически, поэтому я отключаю кэш glide.

есть ли какие-либо решения для решения этой ошибки мигания?

большое спасибо!

4 ответов


после моих многих попыток, просто используйте 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" />

обновление Glide от версии 3 до 4 и setSupportsChangeAnimations(false) на RecyclerView решена проблема для меня

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

не забудьте setHasStableIds(true); в своем adapter и правильно переопределить getItemId() метод.