如何跳过listview getView中的某一行

时间:2014-11-09 13:42:56

标签: android listview

我的listviewwebservice获取数据,返回的数据有时会有一些id(但数据不同)。

对于那些具有相同ID的数据,我只想在listview 一次中显示它们。

我在getView尝试了什么:

    if(position > 0)
        prevId = getItem(position-1).getId();

    if(getItem(position).getId() == prevId)
        //skip current row

问题是,如何跳过当前行? (因为id与前一个相同)

2 个答案:

答案 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,然后什么都不做!