Android global variable and custom adapter -


i have listview 2 textviews columns. using custom adapter manage adapter.

public class mycustombaseadapter extends baseadapter {  private static arraylist<searchresults> searcharraylist;   private layoutinflater minflater;   public mycustombaseadapter(context context, arraylist<searchresults> results) {   searcharraylist = results;   minflater = layoutinflater.from(context);  }   public int getcount() {   return searcharraylist.size();  }   public object getitem(int position) {   return searcharraylist.get(position);  }   public long getitemid(int position) {   return position;  }   public view getview(int position, view convertview, viewgroup parent) {   viewholder holder;   if (convertview == null) {    convertview = minflater.inflate(r.layout.row, null);    holder = new viewholder();     holder.txtname = (textview) convertview.findviewbyid(r.id.left);    holder.txtcitystate = (textview) convertview.findviewbyid(r.id.right);     convertview.settag(holder);   } else {    holder = (viewholder) convertview.gettag();   }    holder.txtname.settext(searcharraylist.get(position).getname());   holder.txtcitystate.settext(searcharraylist.get(position).getcitystate());    return convertview;  }   static class viewholder {   textview txtname;   textview txtcitystate;   } } 

i using global variables change layout of listview. can see txtname set "left" textview , txtcitystate set right textview.

in activity setting globalvariable 0 or 1 depending on user clicks on button01 or button02:

 final button sortdate = (button)findviewbyid(r.id.button01);       sortdate.setonclicklistener(new view.onclicklistener()    {     public void onclick(view v)      {     //  lv1.setadapter(simpleadapter);         globalvars.seteset(0);         //toast.maketext(mainactivity.this, string.valueof(globalvars.geteset()), toast.length_short).show();      }   });       final button sortname = (button)findviewbyid(r.id.button02);       sortname.setonclicklistener(new view.onclicklistener()    {     public void onclick(view v)      {         globalvars.seteset(1);         //toast.maketext(mainactivity.this, string.valueof(globalvars.geteset()), toast.length_short).show();       }   }); 

the variable seem set toast message shows 0 or 1 if click buttons.

in mycustombaseadapter trying change layout this:

 if (globalvars.geteset() == 0)    {     holder.txtname = (textview) convertview.findviewbyid(r.id.left);    holder.txtcitystate = (textview) convertview.findviewbyid(r.id.right);    }    else if (globalvars.geteset() == 1)    {        holder.txtname = (textview) convertview.findviewbyid(r.id.right);        holder.txtcitystate = (textview) convertview.findviewbyid(r.id.left);    } 

but nothing happens. can wrong this? else working fine.

it should easier use adapterview row.xml file. in row.xml set different widths textviews easy solution there problem lv1.setadapter.... line.

  final button sortname = (button)findviewbyid(r.id.button02);       sortname.setonclicklistener(new view.onclicklistener()        {         public void onclick(view v)          {             globalvars.seteset(1);             arraylist<searchresults> searchresults = getsearchresults();             lv1 = (listview) findviewbyid(r.id.listview01);             lv1.setadapter(new mycustombaseadapter2(this, searchresults));         }       }); 

as u see refers mycustombaseadapter2.java. problem "the constructor mycustombaseadapter2(new view.onclicklistener(){}, arraylist) undefined" happens when mycustombaseadapter.java here. out of button listener works fine.

i the things other way around:

in holder, instead of naming fields txtname , txtcitystate, call them txtleft , txtright.

then, move if selects field goes text view getview method

public view getview(int position, view convertview, viewgroup parent) {   viewholder holder;   if (convertview == null) {    convertview = minflater.inflate(r.layout.row, null);    holder = new viewholder();     holder.txtleft = (textview) convertview.findviewbyid(r.id.left);    holder.txtright = (textview) convertview.findviewbyid(r.id.right);     convertview.settag(holder);   } else {    holder = (viewholder) convertview.gettag();   }    string lefttext;   string righttext;     if (globalvars.geteset() == 0)    {         lefttext  = searcharraylist.get(position).getname();        righttext = searcharraylist.get(position).getcitystate()     }    else if (globalvars.geteset() == 1)    {        righttext = searcharraylist.get(position).getname();        lefttext  = searcharraylist.get(position).getcitystate()    }    holder.txtleft.settext(lefttext);   holder.txtright.settext(righttext);    return convertview;  } 

another thing: when user presses 1 of buttons, call adatper.notifydatasetchanged()


Comments

Popular posts from this blog

WPF: binding viewmodel property of type DateTime to Calendar inside ItemsControl -

java - Getting corefrences with Standard corenlp package -

jQuery clickable div with working mailto link inside -