在listView中合并相同项目的最佳方法是什么?

时间:2018-06-25 11:24:34

标签: android algorithm listview arraylist

我有一个lisView,其中一些物品可能具有相似的属性,我想要:

第一,发现这些属性相似的物品。

,将它们合并到列表视图的一行项目中,

最终,当选中项目时,在展开的布局中显示其项目(已合并)。

我的想法不是很强,我想使用for循环来找到类似的项目,然后将它们存储在array中,最后在adapter中检查项目是否已合并type,然后使用Expandable Layout

还有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

考虑使用HashMap。

(?!\d)

如果您的属性是字符串或可以比较的任何内容,则它将存储您的项目列表作为值。为此,请使用以下内容:

HashMap<String, ArrayList<Item>> map = new HashMap<String, ArrayList<Item>>();

要获取具有相同属性的对象列表,请使用

for (int i = 0; i < listOfItems.size(); i++) {
        if(map.containsKey(listOfItems.get(i).property){
          map.get(listOfItems.get(i).property).add(listOfItems.get(i));
        }else{
          ArrayList temp = new ArrayList();
          temp.add(listOfItems.get(i);
          map.put(listOfItems.get(i).property, listOfItems.get(i))
       }
    }