Glide содержит старые ссылки на кэш изображений при просмотре в режиме повторного просмотра - PullRequest
0 голосов
/ 10 июня 2019

У меня есть список изображений, которые будут отображаться в режиме переработки.Я использую Glide lib для загрузки изображений.Все в порядке и работает нормально, кроме раздражающей вещи, которая очень усложнила мою жизнь как разработчика.Когда я прокручиваю вид рециркулятора вверх / вниз, Glide удерживает старые ссылки на позиции и перетасовывает изображения, чтобы установить реальное после останова прокрутки.Изображения загружаются из облачного URL-адреса, а также из локального хранилища устройства.Я публикую свой код ниже.У кого-нибудь есть какие-либо подсказки или ответы на эту проблему, пожалуйста, помогите мне.Заранее спасибо.

RequestOptions requestOptions = new RequestOptions()
                .skipMemoryCache(false)
                .signature(new MediaStoreSignature("IMAGE",System.currentTimeMillis(),0))
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .override(100, 100)
                .placeholder(R.drawable.bg_round_corner_imageview)
                .error(R.drawable.bg_round_corner_imageview);

Glide.with(mContext)
       .setDefaultRequestOptions(new RequestOptions()
                                    .placeholder(R.mipmap.ic_launcher))
       .asBitmap()
       .load(urlProfileImage)
       .thumbnail(0.1f)
       .apply(requestOptions)                              
       .placeholder(R.drawable.bg_round_corner_imageview)                              
       .error(R.drawable.bg_round_corner_imageview))
       .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable
            Transition<? super Bitmap> transition) {
                view.setImageBitmap(resource);                                       
                view.setBackground(mContext.getResources()                                                .getDrawable(R.drawable.bg_round_corner_imageview));
                view.setClipToOutline(true);
            }
       });

Ответы [ 3 ]

0 голосов
/ 10 июня 2019

попробуйте переопределить onViewRecycled метод в адаптере и настройте изображение по умолчанию / образ заполнителя.

Например

@Override
public void onViewRecycled(ViewHolder holder) {
    super.onViewRecycled(holder);
    Glide.with(mContext).load(R.drawable.bg_round_corner_imageview).into(holder.imageview);
}
0 голосов
/ 10 июня 2019

Я думаю, что вы поставили какое-то условие для проверки того, что urlProfileImage равно нулю или нет

Если оно равно нулю, не вызывайте glide и setVisibility == False,

, еслиэто не нуль, тогда загрузите Изображение с скольжением и setVisibility == ИСТИНА.

0 голосов
/ 10 июня 2019

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

Вместо того, чтобы использовать

   .diskCacheStrategy(DiskCacheStrategy.NONE)
...