2017-08-10 32 views
0

當我搜索第一次列表顯示正確的數據,但第二次如果我再次搜索相同的關鍵字它重複list.Previous條目不會被刪除。 我試圖清除filter_list,但它不第二次加載數據在列表中,如果我在過濾器列表中添加通告在構造函數中它不會在過濾器列表中添加項目。如何解決這個問題?過濾器回收商名單

public void filter(String charText) { 

    charText = charText.toLowerCase(Locale.getDefault()); 
    filter_list.addAll(announcement); 
    announcement.clear(); 

    if (charText.length() == 0) { 

     announcement.addAll(filter_list); 

    } else { 

     for (GT gt : filter_list) { 

      if (gt.getTitle().toLowerCase(Locale.getDefault()) 
        .contains(charText)) { 

       announcement.add(gt); 

      } 

     } 

    } 

notifyDataSetChanged(); 

} 
+0

你可以在這裏發佈你的過濾器代碼嗎 –

+0

你可以在選擇或項目點擊後清除臨時列表 –

+0

你是否清除'filter_list'?它看起來每次都是這樣,'announcements'被添加到'filter_list'中,然後再次被添加到for循環中。 – Cheticamp

回答

0

首先您的列表複製到臨時列表中你適配器

sampleListTemp = new ArrayList<String>(); 
sampleListTemp = sampleList; 

現在實現這個功能在適配器和whcich要過濾

public void setFilter(String str) { 
     sampleList = new ArrayList<String>(); 
     if (eventsListTemp.size() > 0) { 
      for (int i = 0; i < eventsListTemp.size(); i++) { 
       if (sampleListTemp.get(i).contains(str.toLowerCase())) { 

        sampleList.add(sampleListTemp.get(i)); 
       } 
      } 
     } 
     notifyDataSetChanged(); 
    } 

用繩子打電話,當你想完整列表不只是傳遞空白。