android - using viewHolder Interface to update state to Listview -


in code below in else section has gettag() inside of arrayadapter

  holder = (viewholder) convertview.gettag(); 

how use section update or latest state of view item , keep state consistent saved state is. if click checkbox or checked state of checkbox database , want displayed in correct state of checkbox?

in app getting previous state of checkbox database , setting checkbox state when listview created, , if state of box changed change in state saved database , checkbox show change in state.

in other words supposed put in section of code, besides gettag line?

  if ((convertview == null)){                  layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service);                 convertview = inflater.inflate(r.layout.smalltank_customer_row, null);                  holder = new viewholder();                  holder.textviewone = (textview) convertview.findviewbyid(r.id.textview1);                 holder.textviewtwo = (textview) convertview.findviewbyid(r.id.textview2);                 holder.textviewthree = (textview) convertview.findviewbyid(r.id.textview3);                 holder.radiogroupone = (radiogroup) convertview.findviewbyid(r.id.radiogroup1);                 holder.radiobuttonone = (radiobutton) convertview.findviewbyid(r.id.radiobutton1);                 holder.radiobuttontwo = (radiobutton) convertview.findviewbyid(r.id.radiobutton2);                 holder.checkboxone = (checkbox) convertview.findviewbyid(r.id.checkbox1);                 holder.buttonone = (button) convertview.findviewbyid(r.id.button1);                 holder.buttontwo = (button) convertview.findviewbyid(r.id.button2);                 holder.buttonthree = (button) convertview.findviewbyid(r.id.button3);                 holder.buttonfour = (button) convertview.findviewbyid(r.id.button4);                  convertview.settag(holder);              }else{                  holder = (viewholder) convertview.gettag();              } 

since convertview can recycled , volatile, extension viewholder equally volatile, shouldn't store persistent data such checkbox selections there. should store checkbox selection values somewhere persisted when activity paused , resumed.

as example, used hashset in 1 o app hold contacts user has selected saved , restored when activity paused , resumed, sample code:

private hashset<contactdata> selset = new hashset<contactdata>();  public view getview(int position, view convertview, viewgroup parent) {     if ((convertview == null)){         layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service);         convertview = inflater.inflate(r.layout.smalltank_customer_row, null);          holder = new viewholder();         //init holder         convertview.settag(holder);     }else{         holder = (viewholder) convertview.gettag();     }     holder.status.setchecked(selset.contains(data));     return convertview; }  public void onclick(view v) {     userholder holder = (userholder) v.gettag();     if (selset.contains(holder.user)) {         selset.remove(holder.user);     } else {         selset.add(holder.user);     } }  public final void oncreate(bundle savedinstancestate) {     if (savedinstancestate != null) {         selset = (hashset<contactdata>) savedinstancestate                 .getserializable("selset");     } }  @override public void onsaveinstancestate(bundle outstate) {     super.onsaveinstancestate(outstate);      outstate.putserializable("selset", selset); } 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -