java - Call OnItemClick method several times on the same activity: -


i'm trying call onitemclick method several time on activity, every time click on item of listvew, content changes, , when click again on item of new content need call method again, code:

    protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      lescat=new arraylist<categorie>();     cg=new categoriegest();             //get categories       lescat=gc.getallcategories();         lvliste= (listview)findviewbyid(r.id.listview1);             //display root categories in listview      adapter = new categoriesadapter(this, cg.getrootcategories(lescat));     lvliste.setadapter(adapter);      lvliste.setonitemclicklistener(this); }      public void onitemclick(adapterview<?> parent, view view, int position, long id)  {          cg=new categoriesgest();                     //if clicked categorie has sub categories, display them                      //in new listeview         if( cg.haschild( lescat.get(position) ) )         {             lv = new listview(this);             lescat1=cg.getchilds(lescat, lescat.get(position) );             categoriesadapter adapter = new categoriesadapter(this, lescat1);             lv.setadapter(adapter);             setcontentview(lv);             lv.setonitemclicklistener(new onitemclicklistener() {                  @override                 public void onitemclick(adapterview<?> parent, view view,                         int position, long id) {                     lescat2=cg.getchilds(lescat, lescat1.get(position) );                     categoriesadapter adapter = new categoriesadapter(mainactivity.this, lescat2);                     lv.setadapter(adapter);                     setcontentview(lv);                  }             });         }     } 

is there way better this? if need call onitemclick method more 2 time have repeat lv.setonitemclicklistener(new onitemclicklistener() { //code}); again

you creating new adapter every time click on item causing list change.

set adapter once (outside click handler) , handle clicks.

you need set click handler once.

see example: http://android-helper.blogspot.co.uk/2011/04/android-listview-onclick-ample.html

update: amendment after new information.

your original question "is there better way this?" opinion.

your solution of recreating listviews , adapters on every click unnecessary , wasteful of resources. in opinion, should have 1 listview , 1 adapter accomplish task have set. clickhandler on listview should set once only.

in effect, doing when clicking on category discarding current listview , adapter, creating new ones replacing view tree when more efficient reuse objects have.

when click on listviewitem, clear current adapter, repopulate updated list of categories based on 1 clicked on , call notifydatasetchanged on adapter repopulate listview updated information.

this not complete sample illustrates major points.

// assumes have custom listadapter named catadapter returns "category" views  protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      getlistview().setonitemclicklistener(new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> parent, view view, int position, long id) {            categoryitem ci=((categoryitem) getlistadapter()).getitem(position); // clicked category              refreshdata(ci.getcategoryid);          }     });      refreshdata(0); // root category  }  // updates listview list of categories public void refreshdata(int parentcategoryid) {     arraylist<category> items = category.getitem(parentcategoryid);      catadapter adp = (catadapter) getlistadapter();     // may need implement these methods on adapter     adp.clear(); // clear out old categories     adp.addall(items); // add new items adapter     adp.notifydatasetchanged(); // refresh ui  } 

Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -