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);
Другие вопросы по тегам