我的listview
从webservice
获取数据,返回的数据有时会有一些id
(但数据不同)。
对于那些具有相同ID的数据,我只想在listview
一次中显示它们。
我在getView
尝试了什么:
if(position > 0)
prevId = getItem(position-1).getId();
if(getItem(position).getId() == prevId)
//skip current row
问题是,如何跳过当前行? (因为id
与前一个相同)
答案 0 :(得分:1)
最好的方法是在将数据输入ListView之前过滤数据 请添加您使用的数据结构和类以获取详细帮助
我认为你需要做类似的事情(T代表一个带有getId()函数的类型):
List<T> removeDuplicateFromList(List<T> data){
HashMap<String,T> filterdData = new HashMap<String,T>();
for (T t: data){
if (!filterdData.containKey(t.getId()){
filterdData.put(t.getId(),t);
}else{
//Update the data at the map if needed
}
}
return filterdData.values();
}
答案 1 :(得分:1)
一个解决方案可能是将以前的行添加到ArrayList中,因此在getView()上生成新行时,您可以检查当前行的内容是否具有在arrayList内部的id,然后什么都不做!