2013-05-31 227 views
0

我使用兩個字符串的String和Hashmap的嵌套集合到Arraylist中,並使用baseadapter將一些數據填充到listview中。我想從HashMap中獲取兩個字符串。從ArrayList中獲取元素<HashMap <String,HashMap <String,String >>>

代碼是在這裏:

1)

ArrayList<HashMap<String, HashMap<String, String>>> Menu = new ArrayList<HashMap<String, HashMap<String, String>>>(); 

2)

HashMap<String,HashMap<String,String>> mainMenu = new HashMap<String, HashMap<String,String>>(); 

3)

HashMap<String,String> subMenu = new HashMap<String,String>(); 

       for (int k = 0; k < jsonsubmenu.length(); k++) { 
        // get all values from jsonsubmenu JSONArray.. 
        String submenuname = jsonsubmenu.optString(k); 
        String price = jsonpeicemenu.optString(k); 

        subMenu.put(submenuname, price); 


       } 

       mainMenu.put(mainmenu, subMenu); 

       Menu.add(mainMenu); 

4)

MenuAdapter menuAdapter = new MenuAdapter(
         RestaurantDetails.this.getParent(), Menu); 

       list.setAdapter(menuAdapter); 

上面的代碼片段顯示收集的使用意義全流量。我正在使用以下語句從選定的職位中挑選數據,但這些語句不值得。請建議我如何在選擇的位置獲取數據。

Stringn menu = Menu.get(position).get(TAG_MENUNAME); 
String cost = Menu.get(position).get(TAG_PRICE); 
+1

小評:在mainMenu.put(MainMenu的,子菜單) - 什麼是MainMenu的字符串,它應該不會是子菜單的標籤。 – selig

回答

2

我想你想:

String cost = Menu.get(position).get(TAG_MENUNAME).get(TAG_SUBMENU); 
+0

你會想把它包含在try {...} catch(NullPointerException e){...}中,因爲第一個映射可能會返回null。 – selig

+1

取決於程序員是否控制輸入。捕捉NullPointerException不是推薦的方式。 – jontejj

+0

@jontejj它不適合我。 –

相關問題