Дублируйте изображения при загрузке изображений из ресурсов Android в виде растрового изображения и настройке ImaegView с помощью glideV4.

Я попытался получить растровое изображение из ресурсов, а затем попытался загрузить список изображений Horizontal recyclerview, используя glide as asBitmap(). Я получаю повторяющиеся изображения и несоответствующие изображения (загружая неправильное изображение вместо требуемого изображения). На приведенном ниже снимке экрана показано, что на ноутбук и мобильный телефон загружено одно и то же растровое изображение и в Footware и Bus загружено неправильное растровое изображение Здесь ноутбук и мобильный телефон имеют одинаковое растровое изображение, а Footware и Bus имеют неправильное растровое изображение  загружен После того, как я удалил скользящий кеш с помощью .skipMemoryCache(true), все заработало.

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

Пробовал следующие пункты, которые были предложены на этой странице: Glide recyclerview загружает дубликат изображения 1) Я добавили заполнитель. 2) очистка битмапа --> Glide.with(context).clear(holder.imgcat); или используя holder.imgcat.setImageBitmap(null); 3) skipMemoryCache(true) работало хорошо, но для загрузки изображений требовался кеш.

InputStream selectedInputStream = Application.get().getAssets().open(ImageSaver.selectedAssets + "/" + mValues.get(position).getImage_url());
                Drawable selectedImagesDrawable = Drawable.createFromStream(selectedInputStream, null);
                Bitmap selectedicon = ((BitmapDrawable) selectedImagesDrawable).getBitmap();
                if(selectedInputStream != null) {
                    try {
                        selectedInputStream.close();
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
                GlideApp.with(context)
                        .asBitmap()
                        .load(selectedicon)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .error(R.drawable.placeholder)
                        .placeholder(R.drawable.placeholder)
                        .into(holder.imgcat);

Я получаю повторяющиеся изображения и несоответствующие изображения (загружаю неправильное изображение вместо требуемого изображения) при установке .diskCacheStrategy(DiskCacheStrategy.RESOURCE) или .diskCacheStrategy(DiskCacheStrategy.ALL).

skipMemoryCache(true) работало хорошо, но для загрузки изображений требовался кеш


person Pradip Tilala    schedule 23.01.2019    source источник


Ответы (1)


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

//in your onBindViewHolder 
fun onBindViewHolder( holder:ViewHolder ,position:Int){
   //call this to clear previous requests
   Glide.with(context).clear(holder.imageView)
   //then make new request
   Glide.with(context).load(items[position].url).into(holder.imageview)
   //other codes
}
person alireza easazade    schedule 23.01.2019