почему после загрузки с помощью библиотеки Glide появляется пустое изображение - PullRequest
0 голосов
/ 31 января 2019

вот запись экрана моего приложения: https://drive.google.com/file/d/1fBxcp5oU6AeAFW6M68ARA6toYv3sh7MQ/view?usp=sharing

после загрузки путей изображений с сервера, я хочу отобразить некоторые изображения с помощью View Pager для создания слайд-шоу изображений

Как видно из видео, первые 2 изображения могут отображаться без проблем, но на третьем и четвертом изображении оно будет некоторое время отображаться пустым (только белый, без изображения), прежде чем в итоге отобразится правильное изображение

это не первый запуск приложения, после повторного открытия приложения это произойдет снова.не кешируется?

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

, вот мой класс адаптера пейджера:

class ImageSlideShowAdapter(val context: Context, val banners: List<Banner>) : PagerAdapter() {


    override fun isViewFromObject(view: View, o: Any): Boolean {
        return view === o
    }

    override fun getCount(): Int {
        return banners.size
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {

        val imageView = ImageView(context)
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP)

        Glide
            .with(context)
            .load(banners.get(position).getFormattedImageURL())
            .into(imageView)

        container.addView(imageView)

        return imageView


    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        container.removeView(`object` as View)
    }
}

1 Ответ

0 голосов
/ 31 января 2019

Вы не кэшируете Изображения

на уровне приложения build.gradle добавляете apply plugin: 'kotlin-kapt' сверху

в зависимостях

implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.8.0'   // for Kotlin

Добавьте этот класс

import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.module.AppGlideModule

@GlideModule
class MyAppGlideModule : AppGlideModule()

Перестройте проект, который он сгенерирует GlideApp

используйте diskCacheStrategy для кэширования изображения

  GlideApp.with(context)
    .load(banners.get(position).getFormattedImageURL())
    .diskCacheStrategy(DiskCacheStrategy.DATA)
    .into(imageView)
...