有没有办法在使用建筑师时监听毕加索的事件,如:
Picasso.with(getContext()).load(url).into(imageView);
我正在尝试在父requestLayout()
上调用invalidate()
和GridView
,因此它会正确调整大小,但我不知道如何设置侦听器或回调。
我看到Picasso有错误事件报告,但有成功事件吗?
答案 0 :(得分:249)
您可以使用Callback
来获取onSuccess和onError事件。只需为您的请求添加一个新的回调,如下所示:
Picasso.with(getContext())
.load(url)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
然后,您可以在onSuccess回调中执行任何更改和修改。
答案 1 :(得分:29)
如果您需要在将位图加载到视图之前访问该位图,请尝试使用:
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。
希望这有帮助
答案 2 :(得分:6)
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);
答案 3 :(得分:5)
回答@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
}
}
);
答案 4 :(得分:3)
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);
答案 5 :(得分:0)
试试这个
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);
}
});
答案 6 :(得分:0)
作为其他答案的补充,如果您不知道在哪里使用原始图片视图,例如ImageView myIV
:
原件:
Picasso.with(activity).load(url).into(myIV);
新增(onBitmapLoaded()
内new Target()
):
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
myIV.setImageBitmap(bitmap);
}