android - Picasso repeats images -


so, i'm using picasso in listview. below relevant section of adapter. each item has image , title. attempt download image item , if url item empty string, uses local image placeholder. works fine, aside having image off screen.

let's screen shows 4 items, image urls. fifth item, below can seen on screen has no image url , therefore should display default placeholder image. issue when scroll down, fifth image displays image fourth item. if scroll fifth item off screen , come back, reverts placeholder. don't seem have problem anywhere else on list.

what doing wrong?

@override     public view getview(final int position, view convertview, viewgroup parent) {         view v = convertview;         final viewholder holder;         if (v == null) {             layoutinflater vi = (layoutinflater) getcontext().getsystemservice(                     context.layout_inflater_service);             v = vi.inflate(r.layout.staff_directory_list_item, null);             holder = new viewholder();             holder.name = (textview) v.findviewbyid(r.id.staffdirectoryname);             holder.image = (imageview) v.findviewbyid(r.id.staffdirectoryimage);         } else {             holder = (viewholder) v.gettag();         }             holder.title.settext(mstaffmembers.get(position).gettitle());             string imageurl = mstaffmembers.get(position).getimage();              try {                 picasso.with(context).cancelrequest(holder.image);                 picasso.with(context).load(imageurl)                                 .placeholder(r.drawable.image_placeholder)                                 .error(r.drawable.image_placeholder)                                 .centercrop()                                 .fit()                                 .tag(context)                                 .into(holder.image);                 } catch (illegalargumentexception e) {                     e.printstacktrace();                      picasso.with(context).cancelrequest(holder.image);                     picasso.with(context)                                 .load(r.drawable.image_placeholder)                                 .into(holder.image);                 }             }         return v;     } 

that's because seeing recycled view. 4th item not deleted listview , scroll brought you. , because hadn't take care of removing image when 4th item scrolled off screen, image still there.

what have do, refer this answer. reset source of imageview listview's row being scrolled off screen (i.e. "recycled"). ondetachedfromwindow() appropriate callback.


Comments