2013-05-31 5 views
0

Я использую вложенные коллекции String и Hashmap из двух строк в Arraylist и заполняет некоторые данные в listview с помощью baseadapter. Я хочу получить обе строки из 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, SubMenu) - что это струнный 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 Это не работает для меня. –

Смежные вопросы