入れ子になったHashMapsを持つArrayListがあります。親のHashMapから値を取得するのは簡単ですが、入れ子になったHashMap(子)から値を取得しようとするとClassCastExceptionが返されます。これは、(前回の記事と同様に)どのように見えるかのサンプルです:入れ子になったHashMapをArrayListにキャストする方法
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> parentHash = new HashMap<String, Object>();
HashMap<String, String> childHash = new HashMap<String, String>();
childHash.put("child_id", "id")
childHash.put("name", "first last");
childHash.put("sex", "man");
parentHash.put("parent_id", "id");
parentHash.put("name", "first last");
parentHash.put("sex", "woman");
parentHash.put("children", childHash);
data.add(parentHash);
キャストするに、私は(悲しいことに、私はClassCastExceptionが取得)次のコードを使用します。
Map<String, String> fetchedChildData = (Map<String, String>) data.get(position).get("children");
showAlert("Test", "Ok", (String) fetchedChildData.get("child_id"));
誰かが教えてもらえます私がここで間違っているのは何ですか?
Errorlist:
04-03 17:34:01.640: W/dalvikvm(26248): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
04-03 17:34:01.645: E/AndroidRuntime(26248): FATAL EXCEPTION: main
04-03 17:34:01.645: E/AndroidRuntime(26248): java.lang.ClassCastException: java.util.ArrayList
04-03 17:34:01.645: E/AndroidRuntime(26248): at com.on_d_mand.live_dashboard.EventListMenu$2.onItemClick(EventListMenu.java:265)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.widget.ListView.performItemClick(ListView.java:3740)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1992)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.os.Handler.handleCallback(Handler.java:587)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.os.Handler.dispatchMessage(Handler.java:92)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.os.Looper.loop(Looper.java:130)
04-03 17:34:01.645: E/AndroidRuntime(26248): at android.app.ActivityThread.main(ActivityThread.java:3691)
04-03 17:34:01.645: E/AndroidRuntime(26248): at java.lang.reflect.Method.invokeNative(Native Method)
04-03 17:34:01.645: E/AndroidRuntime(26248): at java.lang.reflect.Method.invoke(Method.java:507)
04-03 17:34:01.645: E/AndroidRuntime(26248): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
04-03 17:34:01.645: E/AndroidRuntime(26248): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
04-03 17:34:01.645: E/AndroidRuntime(26248): at dalvik.system.NativeStart.main(Native Method)
私はあなたが(ポジション)を取得する必要はないと思います。これを試して。 Map fetchedChildData =(Map )parentContainer.get( "children"); –
kosa
parentContainerとは何ですか?あなたはそれを定義してどのように埋めるのかを示すことができますか? – assylias
'parentContainer'は' data'と同じですか?説明してください。 – darrengorman