web-dev-qa-db-fra.com

Android: échec de l'image de chargement Picasso. comment afficher un message d'erreur

J'essaie d'utiliser la bibliothèque Picasso pour charger le magasin d'images dans le médiastore. Lorsque j'ai appelé load (imageview, callback), l'appel picasso onFail au lieu de onSuccess. Comment savoir pourquoi l'image n'a pas été chargée avec succès?

46
LittleFunny

Utiliser le constructeur:

    Picasso.Builder builder = new Picasso.Builder(this);
    builder.listener(new Picasso.Listener()
    {
        @Override
        public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
        {
            exception.printStackTrace();
        }
    });
    builder.build().load(URL).into(imageView);

Éditer

Pour la version 2.71828, ils ont ajouté l'exception au rappel onError:

        Picasso.get()
            .load("yoururlhere")
            .into(imageView, new Callback() {
                @Override
                public void onSuccess() {
                }

                @Override
                public void onError(Exception e) {
                }
            })
159
Kevin van Mierlo

Lorsque vous utilisez callback, picaso appellera la méthode onSuccess et onError!

File fileImage = new File(mPathImage);
        Picasso.with(mContext).load(fileImage)
                .placeholder(R.drawable.draw_detailed_view_display)
                .error(R.drawable.draw_detailed_view_display)
                .resize(200, 200)
                .into(holder.mImageEvidence, new Callback() {
                    @Override
                    public void onSuccess() {
                        holder.mMediaEvidencePb.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError() {
                        holder.mErrorImage.setVisibility(View.VISIBLE);
                    }
                });
11
TVT. Jake

Si vous voulez utiliser Picasso avec Kotlin et l'expression lambda, sa taille peut être aussi courte que celle-ci:

val picasso = Picasso.Builder(context)
            .listener { _, _, e -> e.printStackTrace() }
            .build()

... et ensuite vous pouvez charger l'image comme d'habitude:

picasso.load(url).into(imageView)
7
donfuxx

Avez-vous ajouté la permission Internet dans Manifest? Avec la réponse de Kevin ici , veuillez consulter le journal des exceptions et poster l'exception ici.

3
viper