#android #android-recyclerview #android-glide
#Android #android-recyclerview #android-glide
Вопрос:
В моем recyclerview при прокрутке вверх / вниз изображения перезагружаются снова. это портит пользовательский интерфейс.
Я знаю поведение recyclerview по умолчанию. Но я хочу реализовать то же самое, что и Whatsapp. Они не перезагружают изображение, если оно уже загружено. Кто-нибудь мне посоветует.
Мой код библиотеки Glide:
BitmapTypeRequest glideRequestmgr = Glide.with(context).load(getGlideURL(path, context)).asBitmap();
glideRequestmgr.diskCacheStrategy(DiskCacheStrategy.ALL)
.dontTransform()
.dontAnimate()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap arg0, GlideAnimation<? super Bitmap> arg1) {
imageView.setImageBitmap(arg0);
}
});
Ответ №1:
Наконец, я исправил эту проблему, поместив recyclerview внутрь NestedScrollView
Шаг 1:
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.NestedScrollView>
Шаг 2:
recyclerView.setNestedScrollingEnabled(false);
Комментарии:
1. Очень интересное решение, могу я узнать, как это работает? У меня это тоже сработало. Но любопытно узнать, как.
2. Скорее всего, это приведет к ошибке OutOfMemeory.
3. @SukithaUdugamasooriya да, я согласен. Это возможно из-за ошибки OutOfMemory. Но в моем случае у меня меньше данных. Если вы нашли какое-либо хорошее решение, опубликуйте свой ответ, чтобы помочь другим.
Ответ №2:
Попробуйте это
GlideApp.with(context)
.asBitmap()
.load(pathToLoad)
.error(R.drawable.ob_glide_app_img_loader)
.listener(requestListener)
.into(simpleTarget)
Комментарии:
1. хороший улов. Я использую старую версию. спасибо за предложение, я попробую
2. также добавьте .DiskCacheStrategy(DiskCacheStrategy.ALL).
Ответ №3:
Используйте свойство RecyclerView,
recyclerview.setHasFixedSize(true);