java - ListView showing incorrect data in views -


if scroll through listview 1 textview (expiresin) in listview item gets copied others randomly. i'm guessing has viewholder can't see i'm going wrong, , expiresin textview have problem with:

public class mysynclistadapter extends couchbaseviewlistadapter {  protected mainactivity parent; private couchdbconnector db; private static final string tag = "mysynclistadapter";  public mysynclistadapter(mainactivity parent, couchdbconnector couchdbconnector, viewquery viewquery) {     super(couchdbconnector, viewquery, true);     this.parent = parent;     this.db = couchdbconnector;     log.d(tag, "in constructor");   }  private static class viewholder {    imageview img;    textview label;    textview dateadded;    textview expiresin; }    @override public view getview(int position, view itemview, viewgroup parent) {     log.d(tag, "in getview");        view v = itemview;     if (v == null) {         layoutinflater vi = (layoutinflater)parent.getcontext().getsystemservice(context.layout_inflater_service);         v = vi.inflate(r.layout.list_item, null);         viewholder vh = new viewholder();         vh.label = (textview) v.findviewbyid(r.id.label);         vh.img = (imageview) v.findviewbyid(r.id.img);         vh.dateadded = (textview) v.findviewbyid(r.id.tvdateadded);         vh.expiresin = (textview) v.findviewbyid(r.id.tvexpiresinlist);         v.settag(vh);     }      textview label = ((viewholder)v.gettag()).label;     textview dateadded = ((viewholder)v.gettag()).dateadded;     textview expiresin = ((viewholder)v.gettag()).expiresin;     imageview img = ((viewholder)v.gettag()).img;     row row = getrow(position);     jsonnode item = row.getvalueasnode();     jsonnode itemtext = item.get("header");     jsonnode dateaddedtext = item.get("dateadded");     jsonnode expirydatetext = item.get("expirydate");     jsonnode attachmenttext = item.get("_attachments");      viewholder holder = (viewholder) v.gettag();      if(label != null) {         holder.label.settext(itemtext.gettextvalue());     }        if(dateadded != null) {             log.d(tag, "in dateadded getview");             if(comparedate.isdateaddedtoday(dateaddedtext.gettextvalue())){              holder.dateadded.settext(r.string.today);              }             else if (comparedate.isdateaddedyesterday(dateaddedtext.gettextvalue())){                 holder.dateadded.settext(r.string.yesterday);             }             else{                 string age = string.valueof(comparedate.getageindays(dateaddedtext.gettextvalue()));                 holder.dateadded.settext( age + " " + parent.getresources().getstring(r.string.days_ago));             }       }       if(!expirydatetext.isnull() && expiresin != null){         long nodays = comparedate.getdaysuntil(expirydatetext.gettextvalue());         if(nodays<6){             holder.expiresin.settextcolor(color.parsecolor("#ff4444"));         }         holder.expiresin.settext(string.valueof(nodays) + " " + parent.getresources().getstring(r.string.days_until_expiry));      }        if(img != null){     //bitmap stuff     holder.img.setimagebitmap(bitmap);      }      return v; } 

update solved adding else statement setting expiresin "". love explaination why if don't set it, uses item's textview.

 if(!expirydatetext.isnull() && expiresin != null){         long nodays = comparedate.getdaysuntil(expirydatetext.gettextvalue());         if(nodays<6){             holder.expiresin.settextcolor(color.parsecolor("#ff4444"));         }         holder.expiresin.settext(string.valueof(nodays) + " " + parent.getresources().getstring(r.string.days_until_expiry));        }     else {         holder.expiresin.settext("");     } 


Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -