Я использую Glide
в связывающем адаптере для RecyclerView
в Android.
RecyclerView
загружается, когда пользователь перемещается из фрагмента детали, обратно во фрагмент галереи, который показывает миниатюры того, что только что произошло во фрагменте детали.
Иногда при загрузке RecyclerView
одно из изображений в RecyclerView
все еще записывается в другом потоке (Kotlin coroutine
, если это имеет значение), который был запущен фрагментом детали.
Glide
находит изображение и отображает его, даже если оно неполное, что приводит к частичным или (чаще) пустым эскизам в галерее RecyclerView
.
Есть ли способ заставить адаптер привязки ждать, пока изображение завершит запись в другом потоке, прежде чем загружать его, или повторно загрузить его, когда оно закончится?
Если это имеет значение, изображения PNGs
.
Вот мой код из adapter
класса:
@BindingAdapter("memoThumb")
fun memoThumb(view: ImageView, memo: Memo) {
val imageUrl = "${getPath(memo.uuid)}$THUMB_NAME"
if (imageUrl.isNotEmpty()) {
Glide.with(view.context)
.load(imageUrl)
.apply(RequestOptions()
.signature(ObjectKey(System.currentTimeMillis()))
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
)
.transition(DrawableTransitionOptions.withCrossFade())
.into(view)
}
}
Спасибо!
John