次のようなビルダーを使用するときに、ピカソからのイベントをリッスンする方法はありますか?
Picasso.with(getContext()).load(url).into(imageView);
私は呼んしようとしているrequestLayout()
とinvalidate()
、親にGridView
それが適切にサイズ変更しますが、私はリスナーまたはコールバックを設定する方法がわからないようにします。
ピカソにエラーイベントレポートがあるようですが、成功イベントはありますか?
回答:
a Callback
を使用して、onSuccessイベントとonErrorイベントを取得できます。次のように、リクエストに新しいコールバックを追加するだけです。
Picasso.with(getContext())
.load(url)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
その後、onSuccessコールバックで変更や修正を実行できます。
.error(R.drawable.error_placeholder_image)
エラー画像の設定に使用
ビューに読み込まれる前にビットマップにアクセスする必要がある場合は、次を使用してみてください。
private Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed() {
}
}
呼び出しメソッドで:
Picasso.with(this).load("url").into(target);
ビューまたはビューホルダーオブジェクトにTargetを直接実装するのが理想的です。
お役に立てれば
答え@Jasは、あなたが使用する必要があります(私は答えにコメントするのに十分な評判を持っていないので)MrEngineer13の答えにコメントとして質問をフォローアップerror()
前に登録する方法をCallback
でinto()
例えば、方法:
Picasso.with(getContext())
.load(url)
.error(R.drawable.error_placeholder_image)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
//Success image already loaded into the view
}
@Override
public void onError() {
//Error placeholder image already loaded into the view, do further handling of this situation here
}
}
);
Squareは最近Targetクラスを更新し、オーバーライドするメソッドが増えました(onPrepareLoad
およびonBitmapFailed
):
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
そして、あなたはまだ使用する必要があります:
Picasso.with(context).load(url).into(target);
private final Callback mImageCallback = new Callback() {
@Override
public void onSuccess() {
startPostponedEnterTransition();
}
@Override
public void onError() {
startPostponedEnterTransition();
}
};
RequestCreator creator = Picasso.with(getActivity()).load(list.get(position).getId());
creator.into(imageView, mImageCallback);
これを試して
Picasso.with(context)
.load(services.get(position).getImageInactive())
.into(holder.icon, new Callback() {
@Override
public void onSuccess() {
holder.imageLoad.setVisibility(View.GONE);
}
@Override
public void onError() {
holder.icon.setImageResource(R.drawable.ic_error_image_load);
}
});