Recyclerview и проблемы с изображением карты
Я разрабатываю приложение для магазина для веб-сайта shopify и хотел, чтобы изображения и названия продуктов отображались на главном экране с макетом карты с данными, полученными с сервера магазина.
У меня есть все, и я могу прокрутить его нормально, однако при быстрой прокрутке приложения некоторые продукты отображаются с кратким отображением различных изображений, а затем правильное изображение загружается через несколько секунд.
Есть ли способ загрузить или сохранить кэшированные изображения, чтобы они всегда оставались в правильном виде карты? Что-то, что мне нужно добавить в layoutManager или recyclerView в Java?
Я на мобильном телефоне, поэтому не могу загрузить код, но могу позже, если потребуется.
3 ответа
Вы можете скрыть вид изображения, когда изображение завершает загрузку. Даже если у вас есть изображения, хранящиеся на устройстве, загрузка нового изображения может занять некоторое время при прокрутке, поскольку карты используются повторно и могут содержать, как в вашем случае, другое изображение.
По методу onBindViewHolder вашего адаптера вьюблера:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
viewHolder.image.setVisibility(View.INVISIBLE);
}
Как только изображение завершит загрузку, установите его видимым:
image.setVisibility(View.VISIBLE);
Таким образом, ничего не будет показано, пока изображение не будет загружено.
На ваши вопросы:
Есть ли способ загрузить или сохранить кэшированные изображения, чтобы они всегда оставались в правильном виде карты?
Да, есть способ использовать две библиотеки Picasso
а также okhttp
для более подробной информации проверьте этот ответ
Что-то, что мне нужно добавить в layoutManager или recyclerView в Java?
Не нужно ничего добавлять:)
Я надеюсь, что это поможет вам и поможет вам правильно исследовать эти библиотеки.
Удачи!
Чтобы сохранить изображение в кэше, вы можете:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);