Я использую Picasso для загрузки изображений и их показа в RecyclerView. Я пытаюсь предотвратить небольшую задержку, которая происходит, когда я прокручиваю RecyclerView, а Picasso загружает новые картинки, поэтому я использую fetch. Когда я использовал точный размер для изображений, это работало хорошо, но теперь я использую «match parent» (для работы на всех устройствах) в моем xml, и с тех пор есть задержка и когда я прокручиваю назад и вперед, он не запоминает картинки (задержка на картинках, которые уже были видны). Я попробовал просто fit () и centerCrop (), но это было медленно, так что это моя текущая попытка решения проблемы:
в адаптере (это выполняется только один раз). Я установил слушателя, чтобы получить точный размер ImageViews
private void preloadImage(final View picture) {
ViewTreeObserver observer = picture.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
PictureUtil.fetchImage(picture.getHeight(), picture.getWidth());
ViewTreeObserver mObserver = picture.getViewTreeObserver();
mObserver.removeOnGlobalLayoutListener(this);
}
});
}
В PictureUtil я извлекаю все картинки:
public static void fetchImage(int height, int width) {
if (height > 0 && width > 0) {
for (House house : Houses.houseList) {
Picasso.get().load(getFrontPicturePath(house.id))
.resize(width, height)
.centerCrop()
.fetch();
}
}
}
и снова в адаптер, вот как я их загружаю:
Picasso.get()
.load(PictureUtil.getFrontPicturePath(houseId))
.error(PictureUtil.getPlaceholderPath(context))
.fit()
.centerCrop()
.into(view);
и это изображение в xml:
<ImageView
android:id="@+id/house_row_picture"
android:layout_width="match_parent"
android:layout_height="170dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/img_small" />
Так что проблема снова в том, что у меня задержка на изображениях (не как когда у меня были фиксированные размеры) и когда я прокручиваю в Recyclerview изображения исчезают и загружаются снова. Что я делаю неправильно? Есть ли лучшая практика для этого?
Заранее спасибо