/ / Erreur Picasso au premier chargement - Android, Picasso

Erreur Picasso au premier chargement - Android, Picasso

J'ai un ListView avec une image chargée par Picasso en utilisant dans mon adaptateur getView():

if (item.getPicture().contains("http")) {
Picasso.with(context).load(item.getPicture()).placeholder(R.drawable.default_picture).into(holder.imageView);
}

Seule la première cellule obtient une image l'autre 2affiche la default_picture. Lorsque je fais défiler toutes les autres cellules ont une image. Lorsque je fais défiler vers le haut, les 2 cellules vides affichent maintenant une image. Est-ce que quelqu'un a déjà vu ça? Quelqu'un at-il une idée de la façon dont je peux déboguer?

entrer la description de l'image ici

Réponses:

1 pour la réponse № 1

Certaines images ne se chargent pas car l'URL est vide ou ne contient pas "http".

La raison pour laquelle vous voyez que les cellules vides deviennent non vides est que les vues sont recyclées. Vous devez donc appeler Picasso ou définir l’image par défaut pour votre ImageView manuellement dans getView(), mais vous ne pouvez jamais quitter le ImageView intacte.

Comme vous n’appelez que Picasso conditionnellement sans toujours effacer l’image, puis, lorsque l’URL est vide ou ne contient pas "http", votre ImageView contiendra toujours l'image précédente de la cellule recyclée.

Alors changez votre code comme ceci:

if ((item.getPicture() != null) && item.getPicture().contains("http")) {
Picasso.with(context).load(item.getPicture()).placeholder(R.drawable.default_picture).into(holder.imageView);
} else {
holder.imageview.setImageResource(R.drawable.default_picture);
}