У меня странное поведение с использованием Picasso. У меня есть три экрана. Экран A имеет вид ресайклера, когда пользователь нажимает на один элемент, на экране B открывается более подробная информация о клике. На экране B a есть три эскиза изображения , и когда пользователь щелкает в любом из этих миниатюр (которые я загрузил пикассо), я начинаю фоновый поток, чтобы записать эти растровые изображения в файлы и передать пути к файлам для экрана C. Экран C имеет просмотр пейджера для отображения изображений. Итак, я снова загружаю изображения с помощью picasso, используя теперь путь к файлу.Picasso загружает неправильные изображения
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = LayoutInflater.from(this.context).inflate(R.layout.item_fullscreen_image,
container, false);
ImageView img = (ImageView) view.findViewById(R.id.img);
//img.setImageURI(Uri.parse(filePaths.get(position)));
Picasso.with(context).load(new File(filePaths.get(position))).into(img);
((ViewGroup) container).addView(photoView);
return view;
}
Проблема заключается в том, когда пользователь выбирает элемент с экрана, перейдите к экрану B и коснитесь ImageView, чтобы открыть экран C с видом пейджера, если это первый раз, работает отлично.
Если вы не в первый раз, изображения, загруженные из файла с помощью picasso, не изменяются, загружает всегда те же три изображения для заполнения плейера представления.
я уже пытался использовать объект для загрузки, но проблема остается:
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = LayoutInflater.from(this.context).inflate(R.layout.item_fullscreen_image,
container, false);
ImageView img = (ImageView) view.findViewById(R.id.img);
Target target = new TargetBitmaps(img);
img.setTag(target);
Picasso.with(context).load(new File(filePaths.get(position))).into(target);
((ViewGroup) container).addView(photoView);
return view;
}
private class TargetBitmaps implements Target {
private ImageView img;
public TargetBitmaps(ImageView img) {
this.img = img;
}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
img.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
}
Я знаю, что это не проблема с моей функцией, чтобы сохранить растровое изображение в файл, потому что если я не использую Picasso и делать таким образом, работает отлично:
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = LayoutInflater.from(this.context).inflate(R.layout.item_fullscreen_image,
container, false);
ImageView img = (ImageView) view.findViewById(R.id.img);
img.setImageURI(Uri.parse(filePaths.get(position)));
((ViewGroup) container).addView(photoView);
return view;
}
Так что, если кто-нибудь может помочь мне и сказать, что я делаю неправильно, я ценю.