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ć?
Odpowiedzi:
1 dla odpowiedzi № 1Niektó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);
}