2017-04-26 77 views
1

我在這裏跟着一個問題,在我的適配器是這樣實現的過濾器:Android的過濾器不向後工作

@NonNull 
@Override 
public Filter getFilter(){ 
    return new Filter(){ 

     @Override 
     protected FilterResults performFiltering(CharSequence constraint) { 
      String filterString = constraint.toString().toLowerCase(); 

      FilterResults results = new FilterResults(); 

      final List<Event> list = events; 

      int count = list.size(); 
      final ArrayList<Event> nlist = new ArrayList<>(count); 

      String filterableString ; 

      for (int i = 0; i < count; i++) { 
       filterableString = list.get(i).getInterpretName(); 
       if (filterableString.toLowerCase().contains(filterString)) { 
        nlist.add(list.get(i)); 
       } 
      } 

      results.values = nlist; 
      results.count = nlist.size(); 

      return results; 
     } 
     @Override 
     protected void publishResults(CharSequence constraint, FilterResults results) { 
      clear(); 
      for (Event item : (List<Event>) results.values) { 
       add(item); 
      } 
      notifyDataSetChanged(); 

     } 

    }; 
} 

,我這樣稱呼它:

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String s) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String s) { 
      adapter.getFilter().filter(s); 
      return true; 
     } 
    }); 

的問題是,當我從查詢中刪除一個字符,沒有任何變化。當我把它全部刪除時,我得到一個空列表

+0

add notifyDataSetChanged()。 –

+0

我應該在哪裏添加它? – Traabefi

+0

Inside for Loop –

回答

0

問題是我正在使用ArrayAdapter。我切換到BaseAdapter,一切都像魅力