2010-11-07 77 views
0

在我的应用程序中,我有3个包含ListView的选项卡,具体取决于选择在以前的选项卡中。基本上,第一个选项卡将列出餐馆,第二个选项卡将列出所选餐馆的子菜单,第三个菜单将列出所选子菜单的项目,然后当选择一个项目时,它将显示关于该项目的一些营养信息。我不知道组织餐馆/子菜单/项目的最佳方法,但我想的方式是嵌套的HashMap,如下所示。Android中嵌套的HashMap创建

HashMap<String, HashMap<String, HashMap<String, Double[]>>> 

我不知道该怎么办,是有效地构建这种地图,很容易在将来添加/删除的东西。我在看xml,但我无法弄清楚如何去做。如果我这样做,我还需要编写Java代码来解析xml,并将其全部放入其映射中的正确位置。我不确定你是否需要使用标签,或者如果你只需要一个利用map的xml文件,然后只是将它导入到你的java项目中。我不认为在Java中编写每一个项目的硬编码效率会非常高,所以我希望能够得到一些帮助。

Possble,像这样?没有完全填写,但我真的不知道我在做什么。

<?xml version="1.0" encoding="UTF-8"?> 
<util:map name="foodmapping"> 
<restaurant key="McDonalds"> 
    <util:map> 

    </util:map>" 

</restaurant> 
<restaurant key="Starbucks"> 
    <value>2 
    </value> 
</restaurant> 
</util:map> 
+1

“我不知道组织餐厅/子菜单/项目的最佳方式,但我想的方式是嵌套的HashMap,如下所示。 “ - 为什么不使用数据库? – CommonsWare 2010-11-07 22:19:00

+0

@CommonsWare:我对Android还是一个新手,所以我认为使用像HashMap这样熟悉的东西(接近Python中的Dictionary)会更容易。你有使用SQLite数据库的好教程吗? – Mike 2010-11-08 01:21:19

回答

0

这可能不是特定的。我不知道android但是我使用嵌套hashmaps的基本原理。初始化应该是最远的嵌套的第一个

我可能没有最好的答案。我不擅长解释。但这是一个代码示例。 注意:这可能不适用于Android,因为我说我从来没有使用过android。这是基本的Java代码。

HashMap<String,HashMap<String,HashMap<String,Object>>>example1 = new HashMap<>(); 
// Init should be furthest first. 
HashMap<String,Object>furthest = new HashMap<>(); 
// This will start up middle level. 
HashMap<String,HashMap<String,Object>>middle = new HashMap<>(); 
// Now that that is done. We can load up values 
middle.put("first",furthest); 
//Now middle is loaded with basic startup. 
example1.put("first",middle); 
//Now this initialization example is complete. 
example1.get("first").get("first").put("lowestSecond",/*SOME OBJECT HERE*/); // This is an example of how to put more data into the furthest level down. 

我不相信这是你的最佳答案。但这是我用来启动多级哈希映射的基本代码