android adapter listview, changes to a row -


i have listview holding items, , 1 of items highlighted.

when click on item want highlighted card no longer highlighted , new item highlighted.

what have done far.

i call adapter list, , 1 of items in list defaultitem, true or false.

the when getview gets called, have if defaultitem, , make change items's ui. save item in class variable called currentdefaultitem.

now when click able change list old highlighted item false , clicked item true. call notifydatasetchanged(); doesn't seem work.

the show getview

@override public view getview(final int position, view v, viewgroup parent) {     viewholder holder;     card card = getitem(position);     if (v == null) {         v = minflater.inflate(r.layout.row_cards, parent, false);      holder = new viewholder();         holder.tvname = (textview) v.findviewbyid(r.id.tvname);         holder.tvbrand = (textview) v.findviewbyid(r.id.tvbrand);     holder.tvlastfour = (textview) v.findviewbyid(r.id.tvlastfour);     holder.tvcounter = (textview) v.findviewbyid(r.id.tvcounter);     holder.tvcard = (imageview) v.findviewbyid(r.id.tvcard);         holder.arrow = (imageview) v.findviewbyid(r.id.arrow);         holder.tick = (imageview) v.findviewbyid(r.id.tick);          if (card.getdefaultcard().intvalue()==(1)){             holder.tick.setvisibility(view.visible);             positionofdefault=position;         }           string brand = card.getbrand();         switch (brand.tolowercase()){             case "visa":                 holder.tvcard.setimageresource(r.drawable.visa2);                 break;             case "mastercard":                 holder.tvcard.setimageresource(r.drawable.mastercardx2);                 break;             case "diners":                 holder.tvcard.setimageresource(r.drawable.dinersclub2);                 break;             case "amex":                 holder.tvcard.setimageresource(r.drawable.americanexpress2);                 break;             case "jcb":                 holder.tvcard.setimageresource(r.drawable.jcg2);                 break;             case "discover":                 holder.tvcard.setimageresource(r.drawable.discover);                 break;         }      holder.b_delete_in_list = (button) v.findviewbyid(r.id.b_delete_in_list);      holder.b_delete_in_list.setonclicklistener(new view.onclicklistener()     {         @override         public void onclick(view v)         {             deletecard(position);         }     });         holder.b_set_default = (button) v.findviewbyid(r.id.b_set_default);          holder.b_set_default.setonclicklistener(new view.onclicklistener()         {             @override             public void onclick(view v)             {                 updatepaymentmethod(position);             }         });     //     v.settag(holder);      // } else {     holder = (viewholder) v.gettag(); }     holder.tvname.settext(cardlist.get(position).getname().touppercase());     holder.tvbrand.settext(cardlist.get(position).getbrand().touppercase());     holder.tvlastfour.settext(cardlist.get(position).getlast_four_digits());       return v; }  

try this

@override public view getview(final int position, view v, viewgroup parent) {     viewholder holder;     card card = getitem(position);     if (v == null)      {         v = minflater.inflate(r.layout.row_cards, parent, false);         holder = new viewholder();         holder.tvname = (textview) v.findviewbyid(r.id.tvname);         holder.tvbrand = (textview) v.findviewbyid(r.id.tvbrand);         holder.tvlastfour = (textview) v.findviewbyid(r.id.tvlastfour);         holder.tvcounter = (textview) v.findviewbyid(r.id.tvcounter);         holder.tvcard = (imageview) v.findviewbyid(r.id.tvcard);         holder.arrow = (imageview) v.findviewbyid(r.id.arrow);         holder.tick = (imageview) v.findviewbyid(r.id.tick);          v.settag(holder);      } else {          holder = (viewholder) v.gettag();      }       if (card.getdefaultcard().intvalue()==(1))      {             holder.tick.setvisibility(view.visible);             positionofdefault=position;      }      string brand = card.getbrand();      switch (brand.tolowercase()){             case "visa":                 holder.tvcard.setimageresource(r.drawable.visa2);                 break;             case "mastercard":                 holder.tvcard.setimageresource(r.drawable.mastercardx2);                 break;             case "diners":                 holder.tvcard.setimageresource(r.drawable.dinersclub2);                 break;             case "amex":                 holder.tvcard.setimageresource(r.drawable.americanexpress2);                 break;             case "jcb":                 holder.tvcard.setimageresource(r.drawable.jcg2);                 break;             case "discover":                 holder.tvcard.setimageresource(r.drawable.discover);                 break;         }      holder.b_delete_in_list = (button)v.findviewbyid(r.id.b_delete_in_list);      holder.b_delete_in_list.setonclicklistener(new view.onclicklistener()     {         @override         public void onclick(view v)         {             deletecard(position);         }     });         holder.b_set_default = (button) v.findviewbyid(r.id.b_set_default);          holder.b_set_default.setonclicklistener(new view.onclicklistener()         {             @override             public void onclick(view v)             {                 updatepaymentmethod(position);             }         });     holder.tvname.settext(cardlist.get(position).getname().touppercase());     holder.tvbrand.settext(cardlist.get(position).getbrand().touppercase());     holder.tvlastfour.settext(cardlist.get(position).getlast_four_digits());       return v; }  

Comments