problem showing object in SimpleExpandableActivity android -
hello have simple expandable list activity working fine until changed this: list<map<string, string>> groupdata = new arraylist<map<string, string>>();
this: list<map<string, image>> groupdata = new arraylist<map<string, image>>();
guess when set textview items in simple expandable list adapter's constructor textview expecting strings instead of objects. there way work arround ? or have stuck strings? here's code:
public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.expandable_list_layout); list<user> header = new arraylist<user>(); header.add(new user("john")); header.add(new user("smith")); header.add(new user("anderson")); header.add(new user("trinity")); header.add(new user("morfeo")); list<string> gretting = new arraylist<string>(); gretting.add("hello"); list<map<string, user>> groupdata = new arraylist<map<string, user>>(); final list<list<map<string, string>>> childdata = new arraylist<list<map<string, string>>>(); (user user : header) { map<string, user> curgroupmap = new hashmap<string, user>(); groupdata.add(curgroupmap); curgroupmap.put(name, user); list<map<string, string>> children = new arraylist<map<string, string>>(); (string word : gretting) { map<string, string> curchildmap = new hashmap<string, string>(); children.add(curchildmap); curchildmap.put(name, word); } childdata.add(children); } //our adapter madapter = new simpleexpandablelistadapter( getapplicationcontext(), groupdata, r.layout.simple_expandable_list_item_1, new string[] { name }, new int[] { r.id.header_text1 }, childdata, r.layout.simple_expandable_list_item_2, new string[] { name }, new int[] { r.id.text1 } ); expandablelistview lv = (expandablelistview)findviewbyid(r.id.list); lv.setadapter(madapter); } }
so final question is: have implement own simple expandable list adapter able set text myself?
edit: here trace of error:
02-21 08:56:54.128: error/androidruntime(277): java.lang.classcastexception: se.madcoderz.categoryobject.user 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.simpleexpandablelistadapter.bindview(simpleexpandablelistadapter.java:249) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.simpleexpandablelistadapter.getchildview(simpleexpandablelistadapter.java:229) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.expandablelistconnector.getview(expandablelistconnector.java:450) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.abslistview.obtainview(abslistview.java:1315) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.listview.makeandaddview(listview.java:1727) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.listview.filldown(listview.java:652) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.listview.fillspecific(listview.java:1284) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.listview.layoutchildren(listview.java:1558) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.abslistview.onlayout(abslistview.java:1147) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.view.layout(view.java:7035) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.linearlayout.setchildframe(linearlayout.java:1249) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.linearlayout.layoutvertical(linearlayout.java:1125) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.linearlayout.onlayout(linearlayout.java:1042) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.view.layout(view.java:7035) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.framelayout.onlayout(framelayout.java:333) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.view.layout(view.java:7035) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.linearlayout.setchildframe(linearlayout.java:1249) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.linearlayout.layoutvertical(linearlayout.java:1125) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.linearlayout.onlayout(linearlayout.java:1042) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.view.layout(view.java:7035) 02-21 08:56:54.128: error/androidruntime(277): @ android.widget.framelayout.onlayout(framelayout.java:333) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.view.layout(view.java:7035) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.viewroot.performtraversals(viewroot.java:1045) 02-21 08:56:54.128: error/androidruntime(277): @ android.view.viewroot.handlemessage(viewroot.java:1727) 02-21 08:56:54.128: error/androidruntime(277): @ android.os.handler.dispatchmessage(handler.java:99) 02-21 08:56:54.128: error/androidruntime(277): @ android.os.looper.loop(looper.java:123) 02-21 08:56:54.128: error/androidruntime(277): @ android.app.activitythread.main(activitythread.java:4627) 02-21 08:56:54.128: error/androidruntime(277): @ java.lang.reflect.method.invokenative(native method) 02-21 08:56:54.128: error/androidruntime(277): @ java.lang.reflect.method.invoke(method.java:521) 02-21 08:56:54.128: error/androidruntime(277): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868) 02-21 08:56:54.128: error/androidruntime(277): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:626) 02-21 08:56:54.128: error/androidruntime(277): @ dalvik.system.nativestart.main(native method)
2nd edit it's working listitems not visible if they're there:
public class categoriesadapter2 extends simpleexpandablelistadapter { private list<? extends list<? extends map<string, user>>> mchilddata; private string[] mchildfrom; private int[] mchildto; public categoriesadapter2(context context, list<? extends map<string, ?>> groupdata, int grouplayout, string[] groupfrom, int[] groupto, list<list<map<string, user>>> childdata, int childlayout, string[] childfrom, int[] childto) { super(context, groupdata, grouplayout, groupfrom, groupto, childdata, childlayout, childfrom, childto); mchilddata = childdata; mchildfrom = childfrom; mchildto = childto; } @override public view getchildview(int groupposition, int childposition, boolean islastchild, view convertview, viewgroup parent) { view v; if (convertview == null) { v = newchildview(islastchild, parent); } else { v = convertview; } bindview(v, mchilddata.get(groupposition).get(childposition), mchildfrom, mchildto, groupposition, childposition); return v; } private void bindview(view view, map<string, user> data, string[] from, int[] to, int groupposition, int childposition) { int len = to.length - 1; (int = 0; < len; i++) { textview v = (textview) view.findviewbyid(to[i]); if (v != null) { v.settext(data.get(from[i]).getname()); } } } }
now it's working don't solution. made new class , extended baseexpandablelistadapter, same superclass simpleexpandablelistadapter extends. don't solution, if there's better solution please let me know.
thanks.
Comments
Post a Comment