我有一个lisView
,其中一些物品可能具有相似的属性,我想要:
第一,发现这些属性相似的物品。
秒,将它们合并到列表视图的一行项目中,
和
最终,当选中项目时,在展开的布局中显示其项目(已合并)。
我的想法不是很强,我想使用for
循环来找到类似的项目,然后将它们存储在array
中,最后在adapter
中检查项目是否已合并type
,然后使用Expandable Layout
。
还有更好的解决方案吗?
答案 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))
}
}