【问题标题】:Getting Element from ArrayList<HashMap<String, HashMap<String, String>>>从 ArrayList<HashMap<String, HashMap<String, String>>> 获取元素
【发布时间】:2013-05-27 09:17:42
【问题描述】:

我在 Arraylist 中使用两个字符串的 String 和 Hashmap 的嵌套集合,并使用 baseadapter 将一些数据填充到 listview 中。我想从 HashMap 中获取两个字符串。

代码在这里:

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);

【问题讨论】:

  • 小注释:在 mainMenu.put(mainmenu,subMenu) - 什么是字符串主菜单,它应该不是 subMenu 的标签。

标签: java android listview collections hashmap


【解决方案1】:

我想你想要:

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

【讨论】:

  • 您需要将其包含在 try{...}catch(NullPointerException e){...} 中,因为第一个映射可能会返回 null。
  • 取决于程序员是否控制输入。不推荐捕获 NullPointerException。
  • 你得到了什么?我刚刚想出了TAG_SUBMENU。您需要将其替换为实际的子菜单名称。顺便提一句。我认为您不需要将菜单包装在 ArrayList 中。使用 LinkedHashMap> 来获取预测迭代顺序。
猜你喜欢
  • 2013-10-05
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多