Monday 15 April 2013

expandablelistview - Android onChildClickListener in expandable ListView -



expandablelistview - Android onChildClickListener in expandable ListView -

i have expandablelistview there 3 grouping items , each grouping contains 5 kid items. want give onclick event on each of kid item of groups , on each 1 different page displayed using intent.

the code have done results follows. onchildclicklistener works proper first groups kid items. when click on kid item of other 2 groups 1 time again displays pages have given first grouping kid items. posting code below. please suggest me solution.

moreactivity.java

package info.demo.goa; public class moreactivity extends activity { private expandlistadapter expadapter; private arraylist<group> explistitems; private expandablelistview expandlist; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.more_tab); expandlist = (expandablelistview) findviewbyid(r.id.exp_list); explistitems = setstandardgroups(); expadapter = new expandlistadapter(moreactivity.this, explistitems); expandlist.setadapter(expadapter); expandlist.setonchildclicklistener(new onchildclicklistener() { @override public boolean onchildclick(expandablelistview parent, view v, int groupposition, int childposition, long id) { if(childposition==0) { intent i=new intent(getapplicationcontext(), basilica_ch.class); startactivity(i); } if(childposition==1) { intent i=new intent(getapplicationcontext(), stfrancis_ch.class); startactivity(i); } if(childposition==2) { intent i=new intent(getapplicationcontext(), lady_ch.class); startactivity(i); } if(childposition==3) { intent i=new intent(getapplicationcontext(), stthomas_ch.class); startactivity(i); } if(childposition==4) { intent i=new intent(getapplicationcontext(), secathedral_ch.class); startactivity(i); } if(childposition==5) { intent i=new intent(getapplicationcontext(), aguada_f.class); startactivity(i); } if(childposition==6) { intent i=new intent(getapplicationcontext(), chapora_f.class); startactivity(i); } if(childposition==7) { intent i=new intent(getapplicationcontext(), caboderama_f.class); startactivity(i); } if(childposition==8) { intent i=new intent(getapplicationcontext(), rachol_f.class); startactivity(i); } if(childposition==9) { intent i=new intent(getapplicationcontext(), terekhol_f.class); startactivity(i); } if(childposition==10) { intent i=new intent(getapplicationcontext(), archa_m.class); startactivity(i); } if(childposition==11) { intent i=new intent(getapplicationcontext(), calizz_m.class); startactivity(i); } if(childposition==12) { intent i=new intent(getapplicationcontext(), goastate_m.class); startactivity(i); } if(childposition==13) { intent i=new intent(getapplicationcontext(), naval_m.class); startactivity(i); } if(childposition==14) { intent i=new intent(getapplicationcontext(), palacio_m.class); startactivity(i); } homecoming false; } }); } public arraylist<group> setstandardgroups() { string group_names[] = { "churches", "forts", "museums" }; string country_names[] = { "basilica of bom jesus", "church , convent of st francis of assisi", "church of our lady of immaculate conception", "church of st. thomas", "se cathedral", "the aguada fort", "the chapora fort", "the cabo de rama fort", "rachol fort", "terekhol fort", "archaeological museum", "calizz museum", "goa state museum", "naval aviation museum ", "palacio deao" }; int images[] = { r.drawable.basilicaofbomjesus, r.drawable.stfrancisofassisi, r.drawable.churchofourladyofimmaculateconception, r.drawable.stthomas, r.drawable.secathedral, r.drawable.fortaguda, r.drawable.chaporafort, r.drawable.cabodarama, r.drawable.racholfort, r.drawable.terekholfort, r.drawable.archaeologicalmuseum, r.drawable.calizzmuseum, r.drawable.goastatemuseum, r.drawable.navalaviationmuseum, r.drawable.palaciododeao, }; arraylist<group> list = new arraylist<group>(); arraylist<child> ch_list; int size = 5; int j = 0; (string group_name : group_names) { grouping gru = new group(); gru.setname(group_name); ch_list = new arraylist<child>(); (; j < size; j++) { kid ch = new child(); ch.setname(country_names[j]); ch.setimage(images[j]); ch_list.add(ch); } gru.setitems(ch_list); list.add(gru); size = size + 5; } homecoming list; } class expandlistadapter extends baseexpandablelistadapter { private context context; private arraylist<group> groups; public expandlistadapter(context context, arraylist<group> groups) { this.context = context; this.groups = groups; } @override public object getchild(int groupposition, int childposition) { arraylist<child> chlist = groups.get(groupposition).getitems(); homecoming chlist.get(childposition); } @override public long getchildid(int groupposition, int childposition) { homecoming childposition; } @override public view getchildview(int groupposition, int childposition, boolean islastchild, view convertview, viewgroup parent) { kid child = (child) getchild(groupposition, childposition); if (convertview == null) { layoutinflater infalinflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); convertview = infalinflater.inflate(r.layout.child_item, null); } imageview iv = (imageview) convertview.findviewbyid(r.id.imgitemimage); textview tv = (textview) convertview.findviewbyid(r.id.txtitemname); tv.settext(child.getname().tostring()); iv.setimageresource(child.getimage()); homecoming convertview; } @override public int getchildrencount(int groupposition) { arraylist<child> chlist = groups.get(groupposition).getitems(); homecoming chlist.size(); } @override public object getgroup(int groupposition) { homecoming groups.get(groupposition); } @override public int getgroupcount() { homecoming groups.size(); } @override public long getgroupid(int groupposition) { homecoming groupposition; } @override public view getgroupview(int groupposition, boolean isexpanded, view convertview, viewgroup parent) { grouping group = (group) getgroup(groupposition); if (convertview == null) { layoutinflater inf = (layoutinflater) context .getsystemservice(context.layout_inflater_service); convertview = inf.inflate(r.layout.group_item, null); } textview tv = (textview) convertview.findviewbyid(r.id.group_name); tv.settext(group.getname()); homecoming convertview; } @override public boolean hasstableids() { homecoming true; } @override public boolean ischildselectable(int groupposition, int childposition) { homecoming true; } } } child.java bundle info.demo.goa; public class kid { private string name; private int image; public string getname() { homecoming name; } public void setname(string name) { this.name = name; } public int getimage() { homecoming image; } public void setimage(int image) { this.image = image; } } group.java bundle info.demo.goa; import java.util.arraylist; public class grouping { private string name; private arraylist<child> items; public string getname() { homecoming name; } public void setname(string name) { this.name = name; } public arraylist<child> getitems() { homecoming items; } public void setitems(arraylist<child> items) { this.items = items; } }

xml code

more_tab.xml <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <expandablelistview android:id="@+id/exp_list" android:layout_width="match_parent" android:layout_height="fill_parent"> </expandablelistview> </relativelayout> child_item.xml <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <imageview android:id="@+id/imgitemimage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustviewbounds="true" android:src="@drawable/ic_launcher" /> <linearlayout android:layout_width="0dp" android:layout_height="40dp" android:layout_marginleft="5dp" android:layout_weight="0.92" > <textview android:id="@+id/txtitemname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textcolor="@android:color/black"/> </linearlayout> <imageview android:id="@+id/imgitemarrow" android:layout_width="15dp" android:layout_height="15dp" android:src="@drawable/arrow_icon" android:layout_marginright="5dp"/> </linearlayout> group_item.xml <?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="10dp" > <textview android:id="@+id/group_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingleft="25dp" android:textstyle="bold"/> </linearlayout>

if grouping position 1 1 - 0 , 1, 2, 3, 4 2 - 0 , 1, 2, 3, 4 not 5, 6, 7, 8, 9 3 - 0 , 1, 2, 3, 4 not 10, 11, 12, 13, 14 @override public boolean onchildclick(expandablelistview parent, view v, int groupposition, int childposition, long id) { if (groupposition == 0) { if (childposition == 0) { intent = new intent(getapplicationcontext(), basilica_ch.class); startactivity(i); } if (childposition == 1) { intent = new intent(getapplicationcontext(), stfrancis_ch.class); startactivity(i); } if (childposition == 2) { intent = new intent(getapplicationcontext(), lady_ch.class); startactivity(i); } if (childposition == 3) { intent = new intent(getapplicationcontext(), stthomas_ch.class); startactivity(i); } if (childposition == 4) { intent = new intent(getapplicationcontext(), secathedral_ch.class); startactivity(i); } } if (groupposition == 1) { if (childposition == 0) { intent = new intent(getapplicationcontext(), aguada_f.class); startactivity(i); } if (childposition == 1) { intent = new intent(getapplicationcontext(), chapora_f.class); startactivity(i); } if (childposition == 2) { intent = new intent(getapplicationcontext(), caboderama_f.class); startactivity(i); } if (childposition == 3) { intent = new intent(getapplicationcontext(), rachol_f.class); startactivity(i); } if (childposition == 4) { intent = new intent(getapplicationcontext(), terekhol_f.class); startactivity(i); } } if (groupposition == 2) { if (childposition == 0) { intent = new intent(getapplicationcontext(), archa_m.class); startactivity(i); } if (childposition == 1) { intent = new intent(getapplicationcontext(), calizz_m.class); startactivity(i); } if (childposition == 2) { intent = new intent(getapplicationcontext(), goastate_m.class); startactivity(i); } if (childposition == 3) { intent = new intent(getapplicationcontext(), naval_m.class); startactivity(i); } if (childposition == 4) { intent = new intent(getapplicationcontext(), palacio_m.class); startactivity(i); } } homecoming false; }

android expandablelistview expandablelistadapter

No comments:

Post a Comment