私はこのメソッドを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
2 つ以上の画像があり、画像間をスワイプすると、終了せずに正しく読み込まれ、ImagePager
.
理論:
キャッシュの問題ではないかと思いますが、いろいろ検索した結果、問題はピカソの弱い参照にあると思います。この問題は、ImagePager を持つアクティビティを最初にロードしたときにのみ発生することに注意してください。
別の場所では、現在、最初に写真をロードするアダプターでPicasso
正常に動作します。クラスのメソッド内でlistView
呼び出します。Picasso
getView
Adapter
訪問したリンク
- Androidのピカソで匿名クラスはどのようにGCされますか?
- ViewPager が Picasso で画像を遅延ロードできない
- http://square.github.io/picasso/
- https://plus.google.com/communities/109244258569782858265/stream/885843f4-c8b5-4851-9de1-b0374121dfa3
- アダプタ上の Picasso でのターゲットの使用
- https://github.com/square/picasso/pull/349
前もって感謝します。