如何听毕加索(Android)加载完整的事件?

有没有一种方法来听取毕加索的事件时使用的build设者,如:

Picasso.with(getContext()).load(url).into(imageView);

我试图在父GridView上调用requestLayout()invalidate() ,所以它会调整正确,但我不知道如何设置一个侦听器或callback。

我看到毕加索有错误事件报告,但有一个成功的事件?

Related of "如何听毕加索(Android)加载完整的事件?"

您可以使用Callback来获取onSuccess和onError事件。 只需添加一个新的callback到你的请求,如下所示:

 Picasso.with(getContext()) .load(url) .into(imageView, new com.squareup.picasso.Callback() { @Override public void onSuccess() { } @Override public void onError() { } }); 

然后,您可以在onSuccesscallback中执行任何更改和修改。

如果您需要在加载到视图之前访问位图,请尝试使用:

 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。

希望这可以帮助

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); 

回答@Jas作为对MrEngineer13的回答的评论(因为我没有足够的信誉评论任何回答)的问题,你应该在注册Callbackinto()方法之前使用error() 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 } } ); 
  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); } });