Existe-t-il un moyen d'écouter les événements de Picasso lors de l'utilisation du générateur tel que:
Picasso.with(getContext()).load(url).into(imageView);
J'essaie d'appeler requestLayout()
et invalidate()
sur le parent GridView
pour qu'il se redimensionne correctement, mais je ne sais pas comment définir un écouteur ou un rappel.
Je vois que Picasso a signalé des événements d'erreur, mais y a-t-il un événement de réussite?
Vous pouvez utiliser une Callback
pour obtenir les é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() {
}
});
Vous pouvez ensuite effectuer des modifications et des modifications dans le rappel onSuccess.
Si vous devez accéder à l'image bitmap avant qu'elle ne soit chargée 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 implémenteriez Target sur une vue ou un objet détenteur de vue directement.
J'espère que cela t'aides
Square a récemment mis à jour la classe Target et il existe maintenant plusieurs méthodes pour 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 encore utiliser:
Picasso.with(context).load(url).into(target);
Répondre à la question suivante de @Jas en tant que commentaire à la réponse de MrEngineer13 (étant donné que je n'ai pas assez de réputation pour commenter dans une réponse), vous devez utiliser la méthode error()
avant d'enregistrer la Callback
à la méthode into()
, par exemple:
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, si vous ne savez pas où utiliser la vue originale, par exemple. ImageView myIV
:
Original:
Picasso.with(activity).load(url).into(myIV);
Nouveau (dans onBitmapLoaded()
of new Target()
):
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
myIV.setImageBitmap(bitmap);
}