1

Ich versuche, eine einfache RSS-Feed-Reader-Anwendung für meine Mobile-Computing-Klasse zu erstellen. Ich habe eine Klasse erstellt, um RSS-Daten zu verwalten und zu halten.ClassCastException: java.util.HashMap mit Android SimpleExpandableListAdapter

@SuppressWarnings("unchecked") 
    SimpleExpandableListAdapter rssItemList = new SimpleExpandableListAdapter(
      this,      // context (this class) 
      createTitleList(),   // Creating group List 
      R.layout.parent_row,  // Group item layout XML 
      new String[]{"titles"},  // the key of group item 
      new int[]{R.id.itemTitle}, // ID of each group item.-Data under the key goes into this TextView 
      createChildList(),   // childData describes second-level entries 
      R.layout.child_row,   // Layout for sub-level entries(second level) 
      new String[]{"desc"},  // Keys in childData maps to display 
      new int[]{R.id.itemDesc} // Data under the keys above go into these TextViews 
    ); 
    setListAdapter(rssItemList); 

Mein Problem ist die Anzeige es, ich versuche, ein ExpandableListView zu verwenden und ich erhalte einen Fehler, wenn ich versuche, einen Eintrag in der Liste zu erweitern.

E/AndroidRuntime(2542): FATAL EXCEPTION: main 
E/AndroidRuntime(2542): java.lang.ClassCastException: java.util.HashMap 
E/AndroidRuntime(2542):  at android.widget.SimpleExpandableListAdapter.getChildrenCount(SimpleExpandableListAdapter.java:255) 
E/AndroidRuntime(2542):  at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:561) 
E/AndroidRuntime(2542):  at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:682) 
E/AndroidRuntime(2542):  at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:567) 
E/AndroidRuntime(2542):  at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:527) 
E/AndroidRuntime(2542):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 
E/AndroidRuntime(2542):  at android.os.Handler.handleCallback(Handler.java:587) 
E/AndroidRuntime(2542):  at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(2542):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(2542):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime(2542):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(2542):  at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(2542):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime(2542):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime(2542):  at dalvik.system.NativeStart.main(Native Method) 

Ich verstehe nicht, warum ich diesen Fehler, da mein Code für die Herstellung von Gruppe und Kind Liste Karten sind fast gleich.

Um klar zu sein, wird es die Gruppenliste anzeigen, wird aber nicht erweitert, um die untergeordnete Liste anzuzeigen.

Zum Nutzen der Zukunft Googler, ich habe folgende Tutorials wurden mit:

Expandable ListView In Android

Expandable lists

+0

Sie sollten das Code-Snippet, wo die Ausnahme geworfen wird, einschließlich der Zeilennummern – Danish

+0

hochladen Die oben gezeigte Ausnahme tritt in Android-Systemcode, nicht in Ridkll-Code selbst. – Jules

Antwort

2

für SimpleExpandableListAdapter auf den Code suchen (was ich habe noch nie verwendet, so konnte ich falsch sein hier), das Gruppenfeld wird als

List<? extends Map<String, ?>> 

erklärt, während die Kinder sein sollten

List<? extends List<? extends Map<String, ?>>> 

was zu sagen ist, sollten die Kinder eine Liste von Listen von Karten, nicht eine Liste der Karten, wie Sie scheinen zu erbringen werden.

Ich würde vorschlagen, die Zeilen loszuwerden, wo Sie Warnungen über generische Typen unterdrücken und die Warnungen tatsächlich beheben, anstatt sie nur zu verstecken. Sie verhindern diese Art von Versagen und es gibt sehr wenige Situationen, in denen sie tatsächlich unvermeidlich sind.

+1

+1 für das Unterdrücken von Warnungen. Das verlangt nur Ärger. – trutheality

+0

Danke. Ich war eigentlich nur sehr verwirrt. Es macht wenig Sinn, eine Liste zu haben, deshalb habe ich das übersehen. –