Comment écouter Picasso (Android) charger des événements complets?

Existe-t-il un moyen d’écouter les événements de Picasso lors de l’utilisation du générateur comme:

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

J’essaie d’appeler requestLayout() et d’ invalidate() sur le GridView parent afin qu’il redimensionne correctement mais je ne sais pas comment définir un écouteur ou un rappel.

Je vois que Picasso a des rapports d’erreur, mais y a-t-il un événement réussi?

Vous pouvez utiliser un rappel pour obtenir des événements onSuccess et onError. Ajoutez simplement un nouveau rappel à votre demande comme ceci:

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

Ensuite, vous pouvez effectuer des modifications et des modifications dans le rappel onSuccess.

Si vous devez accéder à l’image bitmap avant son chargement dans la vue, essayez d’utiliser:

 private Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { } @Override public void onBitmapFailed() { } } 

Dans la méthode d’appel:

 Picasso.with(this).load("url").into(target); 

Idéalement, vous devez implémenter Target sur une vue ou afficher directement un object titulaire.

J’espère que cela t’aides

Square a récemment mis à jour la classe Target et il existe maintenant d’autres méthodes à remplacer ( onPrepareLoad et 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) { } }; 

Et vous devez toujours utiliser:

 Picasso.with(context).load(url).into(target); 

En répondant à la question de suivi de @Jas comme un commentaire à la réponse de MrEngineer13 (puisque je n’ai pas assez de réputation pour commenter dans une réponse), vous devez utiliser la méthode error() avant d’enregistrer le Callback avec la méthode 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); 

Essaye ça

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

En complément d’autres réponses, au cas où vous ne sauriez pas où utiliser la vue d’image originale, par exemple, ImageView myIV :

Original:

 Picasso.with(activity).load(url).into(myIV); 

Nouveau (dans onBitmapLoaded() de la new Target() ):

 public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { myIV.setImageBitmap(bitmap); }