android - ClassCastException using Slide ExpandableListAdapter -
i'm implementing slide expandablelistadapter tjerk wolternik, getting classcastexception when list i'm using on called. i'm hoping can me figure out why happening.
i using on custom array adapter, seen here:
public class resultsadapter extends arrayadapter<string> { private final layoutinflater layoutinflater; public resultsadapter(context context, int textviewresourceid) { super(context, textviewresourceid); layoutinflater = layoutinflater.from(context); } @override public view getview(int position, view convertview, viewgroup parent){ if(convertview == null){ convertview = layoutinflater.inflate(r.layout.row, null); //must overall layout } textview venname = (textview) convertview.findviewbyid(r.id.rowname); textview venaddress = (textview) convertview.findviewbyid(r.id.rowadd); venname.settext(venuelist.getvenuename(position)); venaddress.settext(venuelist.getvenueaddress(position)); return convertview; } }
the listview working extension of listfragment, right here:
public class listfragmentclickable extends listfragment{ private onitemselectedlistener listener; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.activity_results, container, false); return view; } @override public void onlistitemclick(listview l, view v, int position, long id) { updatedetail(position); //see bottom } public interface onitemselectedlistener { public void onitemselected(string name); } @override public void onattach(activity activity) { super.onattach(activity); if (activity instanceof onitemselectedlistener) { listener = (onitemselectedlistener) activity; } else { throw new classcastexception(activity.tostring() + " must implement listfragmentclickable.onitemselectedlistener"); } } public void updatedetail(int position) { string name = venuelist.getvenuename(position); listener.onitemselected(name); } }
the logcat pointing portion of library's code (specifically final linearlayout.layoutparams params = (linearlayout.layoutparams)target.getlayoutparams();):
private void updateexpandable(view target, int position) { final linearlayout.layoutparams params = (linearlayout.layoutparams)target.getlayoutparams(); if(openitems.get(position)) { target.setvisibility(view.visible); params.bottommargin = 0; } else { target.setvisibility(view.gone); params.bottommargin = 0-viewheights.get(position); } } and here logcat:
07-31 23:42:20.931: e/androidruntime(3557): fatal exception: main 07-31 23:42:20.931: e/androidruntime(3557): java.lang.classcastexception: android.widget.relativelayout$layoutparams 07-31 23:42:20.931: e/androidruntime(3557): @ com.tjerkw.slideexpandable.library.abstractslideexpandablelistadapter.updateexpandable(abstractslideexpandablelistadapter.java:222) 07-31 23:42:20.931: e/androidruntime(3557): @ com.tjerkw.slideexpandable.library.abstractslideexpandablelistadapter.enablefor(abstractslideexpandablelistadapter.java:159) 07-31 23:42:20.931: e/androidruntime(3557): @ com.tjerkw.slideexpandable.library.abstractslideexpandablelistadapter.enablefor(abstractslideexpandablelistadapter.java:142) 07-31 23:42:20.931: e/androidruntime(3557): @ com.tjerkw.slideexpandable.library.abstractslideexpandablelistadapter.getview(abstractslideexpandablelistadapter.java:64) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.abslistview.obtainview(abslistview.java:1449) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.listview.onmeasure(listview.java:1103) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:3261) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.framelayout.onmeasure(framelayout.java:250) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:3261) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.framelayout.onmeasure(framelayout.java:250) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:3261) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.framelayout.onmeasure(framelayout.java:250) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:3261) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.framelayout.onmeasure(framelayout.java:250) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.linearlayout.measurehorizontal(linearlayout.java:683) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.linearlayout.onmeasure(linearlayout.java:311) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:3261) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.framelayout.onmeasure(framelayout.java:250) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.linearlayout.measurevertical(linearlayout.java:531) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.linearlayout.onmeasure(linearlayout.java:309) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:3261) 07-31 23:42:20.931: e/androidruntime(3557): @ android.widget.framelayout.onmeasure(framelayout.java:250) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.view.measure(view.java:8532) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewroot.performtraversals(viewroot.java:915) 07-31 23:42:20.931: e/androidruntime(3557): @ android.view.viewroot.handlemessage(viewroot.java:1991) 07-31 23:42:20.931: e/androidruntime(3557): @ android.os.handler.dispatchmessage(handler.java:99) 07-31 23:42:20.931: e/androidruntime(3557): @ android.os.looper.loop(looper.java:150) 07-31 23:42:20.931: e/androidruntime(3557): @ android.app.activitythread.main(activitythread.java:4358) 07-31 23:42:20.931: e/androidruntime(3557): @ java.lang.reflect.method.invokenative(native method) 07-31 23:42:20.931: e/androidruntime(3557): @ java.lang.reflect.method.invoke(method.java:507) 07-31 23:42:20.931: e/androidruntime(3557): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:849) 07-31 23:42:20.931: e/androidruntime(3557): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:607) 07-31 23:42:20.931: e/androidruntime(3557): @ dalvik.system.nativestart.main(native method) can explain me happening? i'm using linearlayout in layout, i'm not sure casting issue is. layout follows in github link. help.
edit: here row.xml well:
<?xml version="1.0" encoding="utf-8"?> <textview android:id="@+id/rowname" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textstyle="bold" android:textsize="16dp" android:focusable="false" android:paddingleft="5dp" /> <textview android:id="@+id/rowadd" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_below="@id/rowname" android:focusable="false" android:paddingtop="2dp" android:paddingleft="5dp"/> <textview android:id="@+id/rowfit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:paddingtop="5dp" android:paddingright="10dp" android:focusable="false" android:textstyle="bold" android:textsize="18dp" /> <textview android:id="@+id/rowdist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparentbottom="true" android:paddingbottom="5dp" android:paddingright="10dp" android:focusable="false"/> <!-- below xml slide expandablelistview --> <button android:id="@+id/expandable_toggle_button" android:text="more" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/text" android:layout_alignparentright="true" android:layout_aligntop="@id/text"/> <linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:id="@+id/expandable" android:background="#000000"> <!-- put whatever want in expandable view --> <textview android:id="@+id/testtext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingtop="5dp" android:text="testtestest" android:paddingright="10dp" android:focusable="false" android:textstyle="bold" android:textsize="18dp" /> </linearlayout> <!-- slide expandablelistview xml ends here -->
your row.xml doesn't complete @ all. believe library using expecting row.xml single linear layout 2 children. first child unexpanded view , second child expanded view. below (i haven't verified valid layout).
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:slide="http://schemas.android.com/apk/res/com.tjerkw.slideexpandable.library" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <relativelayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/item"> <textview android:id="@+id/rowname" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textstyle="bold" android:textsize="16dp" android:focusable="false" android:paddingleft="5dp" /> <textview android:id="@+id/rowadd" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_below="@id/rowname" android:focusable="false" android:paddingtop="2dp" android:paddingleft="5dp"/> <textview android:id="@+id/rowfit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:paddingtop="5dp" android:paddingright="10dp" android:focusable="false" android:textstyle="bold" android:textsize="18dp" /> <textview android:id="@+id/rowdist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_alignparentbottom="true" android:paddingbottom="5dp" android:paddingright="10dp" android:focusable="false"/> <!-- below xml slide expandablelistview --> <button android:id="@+id/expandable_toggle_button" android:text="more" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/text" android:layout_alignparentright="true" android:layout_aligntop="@id/text"/> </relativelayout> <linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:id="@+id/expandable" android:background="#000000"> <!-- put whatever want in expandable view --> <textview android:id="@+id/testtext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingtop="5dp" android:text="testtestest" android:paddingright="10dp" android:focusable="false" android:textstyle="bold" android:textsize="18dp" /> </linearlayout> </linearlayout> <!-- slide expandablelistview xml ends here --> you can check out sample expandable_list_item.xml
Comments
Post a Comment