Как прослушать события загрузки Picasso (Android)?

Есть ли способ прослушать события из Picasso при использовании построителя, например:

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

Я пытаюсь вызвать requestLayout() и invalidate() в родительском GridView поэтому он будет правильно requestLayout() но я не знаю, как установить прослушиватель или обратный вызов.

Я вижу, что Picasso сообщает об ошибках, но есть ли событие успеха?

Solutions Collecting From Web of "Как прослушать события загрузки Picasso (Android)?"

Вы можете использовать Callback вызов для получения событий onSuccess и onError. Просто добавьте новый обратный вызов к вашему запросу так:

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

Затем вы можете выполнять любые изменения и модификации в обратном вызове onSuccess.

Если вам нужно получить доступ к растровому изображению до его загрузки в представление, попробуйте использовать:

 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 непосредственно на объекте view или view.

Надеюсь это поможет

Квадрат в последнее время обновил целевой класс, и теперь есть больше способов переопределить (был добавлен 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 (поскольку у меня недостаточно репутации для комментариев в любом ответе), вы должны использовать метод error() до регистрации Callback по методу in 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); } });