У меня есть Activity
с ImagePagerAdapter
(расширяет FragmentStatePagerAdapter
), у которого есть этот метод getItem
:
@Override
public Fragment getItem(int position) {
Log.d(LOGTAG, "------------>mUserPicturesList.get("+position+").getFilename(): " + mUserPicturesList.get(position).getFilename());
return UserDetailFragment.newInstance(mUserPicturesList.get(position).getFilename());
}
Фрагмент, который создается, имеет это onCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate and locate the main ImageView
final View v = inflater.inflate(R.layout.image_detail_fragment, container, false);
mImageView = (ImageView) v.findViewById(R.id.imageView);
mProgressPicturePager = (ProgressBar) v.findViewById(R.id.progress_picture_pager);
String imageUrl = WApp.PHOTO_URL + mImageUrl + "?type=user_gallery_big_img";
Picasso picasso = Picasso.with(getActivity());
picasso.setDebugging(true);
picasso.load(imageUrl)
.placeholder(R.drawable.no_picture_man_big)
.error(android.R.drawable.stat_notify_error)
.into(mImageView, new Callback() {
@Override
public void onSuccess() {
mProgressPicturePager.setVisibility(View.GONE);
}
@Override
public void onError() {
Log.d(LOGTAG, "picasso load error");
mProgressPicturePager.setVisibility(View.GONE);
}
});
return v;
}
Проблема:
Когда ImagePager
загружается в первый раз, иногда Пикассо вызывает onError
, показывая .error
drawable. Если я нажму кнопку «Назад» и вернусь к Activity
, у которого есть ImagePager
, Пикассо загрузит изображение правильно. Если в ImagePager
есть два или более изображений, и я прокручиваю между изображениями, они загружаются правильно несколько раз без выхода и повторного входа в ImagePager
.
Теории:
Я думаю, что это может быть проблема кеша, но после многих поисков я уверен, что проблема в слабой ссылке Picasso. Имейте в виду, что проблема возникает только в ПЕРВЫЙ РАЗ, когда я загружаю действие, имеющее ImagePager.
В другом месте в настоящее время Picasso
отлично работает в listView
с адаптером, загружающим картинки в первый раз. Вызов Picasso
внутри метода getView
класса Adapter
.
Посещенные ссылки
- Как анонимный класс получит GC'd в Пикассо на Android?
- ViewPager не может лениво загружать изображения с Picasso
- http://square.github.io/picasso/
- https://plus.google.com/communities/109244258569782858265/stream/885843f4-c8b5-4851-9de1-b0374121dfa3
- Использование Target в Picasso на адаптере
- https://github.com/square/picasso/pull/349
Заранее спасибо.