2013-05-31 182 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它不适合我。 –

相关问题