/ / Błąd Picassa przy pierwszym ładowaniu - android, picasso

Błąd Picassa przy pierwszym ładowaniu - Android, Picasso

Mam ListView z obrazem załadowanym przez Picasso za pomocą mojego adaptera getView():

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

Tylko pierwsza komórka otrzymuje obraz, a druga 2pokaż default_picture. Kiedy przewijam wszystkie pozostałe komórki mają obraz. Kiedy przewijam z powrotem na górę, 2 komórki, które były puste, pokazują teraz Obraz. Czy ktokolwiek to widział? Czy ktoś ma pomysł, jak mogę debugować?

wprowadź opis obrazu tutaj

Odpowiedzi:

1 dla odpowiedzi № 1

Niektóre obrazy nie ładują się, ponieważ adres URL jest pusty lub nie zawiera "http".

Powodem, dla którego puste komórki stają się niepuste, jest to, że widoki są ponownie przetwarzane. Musisz więc zadzwonić do Picassa lub ustawić domyślny obraz dla swojego ImageView ręcznie w getView(), ale nigdy nie możesz opuścić ImageView nietknięty.

Ponieważ wywołujesz tylko stan warunkowy Picassa bez usuwania obrazu, a kiedy adres URL jest pusty lub nie zawiera "http", ImageView nadal będzie zawierał poprzedni obraz z recyklingowanej komórki.

Więc zmień swój kod w ten sposób:

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