Android:ArrayList的地图

时间:2011-05-05 13:50:21

标签: android map arraylist

我为ListView使用自定义列表适配器和ArrayList。这个解决方案已经足够好了,但现在我需要使用MapLists的Map,如下所示:

TreeMap<String, ArrayList<ItemsModel>>

其中ItemsModel是Java bean。之前我曾经以这种方式填充这个ArrayList:

itemsDataArrayList.add(itemModel)

现在我遇到了Map界面的一些困难。首先,我不知道如何填充我的新Map结构:我想这个

mapInstance.put(itemModel.getItemName.toString(), itemsDataArrayList)

将无效,因为itemsDataArrayList是元素列表,而不是某个元素。

其次,我不确定如何在ItemsAdapter类中正确声明这个地图实例。当我使用ArrayList时,它非常简单。一些例子会非常有用。

2 个答案:

答案 0 :(得分:2)

我建议你研究/尝试创建自己的BaseAdapter。当您覆盖此类时,它将为您提供覆盖以填充列表视图所需的所有功能。

这样做的好处是可以让您完全控制列表视图中的内容以及每个视图的创建方式。

然后,在您开始工作后,我建议您查看ViewHolder设计模式以及回收视图,这是滚动列表视图时提高效率的好方法。

答案 1 :(得分:1)

你真正想要的似乎是MultiMap。对于您的第一个问题 - 您的尝试非常好,您只能将ArrayLists作为值放入TreeMap中。

问题可能在于,如果要将某些ItemsModel添加到Map中,首先需要获取键的List,然后将ItemsModel添加到该列表中。此外,您需要确保此特定键的此列表存在,如果不存在,则创建它。

示例:

String key = "hi";
ArrayList keyList = mapInstance.get(key);
if (keyList == null) {
   keyList = new ArrayList();
   mapInstance.put(key, keyList);
}
keyList.add(itemsModelInstance);

get() / contains()等可能在某种程度上相同。我建议您构建自己的Multimap<?,?>实现,或者只使用现有的实现,例如Guava中的链接(上面的链接)。

亲切的问候,

AVI