Tengo un ListView con una imagen cargada por Picasso usando en mi adaptador getView()
:
if (item.getPicture().contains("http")) {
Picasso.with(context).load(item.getPicture()).placeholder(R.drawable.default_picture).into(holder.imageView);
}
Solo la primera celda obtiene una imagen las otras 2.muestra la imagen por defecto. Cuando me desplazo todas las demás celdas tienen una imagen. Cuando vuelvo a la parte superior, las 2 celdas que estaban en blanco ahora muestran una imagen. ¿Alguien ha visto esto alguna vez? ¿Alguien tiene una idea de cómo puedo depurar?
Respuestas
1 para la respuesta № 1Algunas imágenes no se cargan porque la URL está vacía o no contiene "http".
La razón por la que ve que las celdas vacías se vuelven no vacías es que las vistas se reciclan. Por lo tanto, debe llamar a Picasso o configurar la imagen predeterminada para su ImageView
manualmente en getView()
, pero nunca puedes dejar el ImageView
sin tocar
Debido a que solo llama a Picasso de forma condicional sin borrar siempre la imagen, cuando la URL está vacía o no contiene "http", su ImageView
Aún contendrá la imagen anterior de la celda reciclada.
Así que cambia tu código de esta manera:
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);
}