2016-01-22 231 views
0

我有一個SearchView和一個RecyclerView裏面我的片段,我創建getFilter方法添加搜索功能,但我的問題是這樣的SearchView不工作,因爲它應該我面臨兩個問題,下面解釋SearchView無法正常工作

1 - 假設我有一個數據被搜索類似 {字符串1,字符串兩個字符串3},如果我進入s然後我得到的結果只有String1手段正在根據硬道理得到結果我字符串

請參閱圖片以獲取我想要解釋的內容

in this image you can see am getting the result according to the last word of my String

in my second image you can see that now am not getting any results (but the String contains what am searching for)

我這是怎麼產生的GetFilter我的適配器類

private static class UserFilter extends Filter { 

    private final NotesAdapter adapter; 

    private final List<Information> originalList; 

    private final List<Information> filteredList; 

    private UserFilter(NotesAdapter adapter, List<Information> originalList) { 
     super(); 
     this.adapter = adapter; 
     this.originalList = new LinkedList<>(originalList); 
     this.filteredList = new ArrayList<>(); 
    } 

    @Override 
    protected FilterResults performFiltering(CharSequence constraint) { 
     filteredList.clear(); 
     final FilterResults results = new FilterResults(); 

     if (constraint == null || constraint.length() == 0) { 
      filteredList.addAll(originalList); 

     } else { 
      final String filterPattern = constraint.toString().toLowerCase().trim(); 

      for (final Information user : originalList) { 
       if (user.title.contains(filterPattern)) { 
        filteredList.add(user); 
       } 
      } 
     } 
     results.values = filteredList; 
     results.count = filteredList.size(); 
     return results; 
    } 


    @Override 
    protected void publishResults(CharSequence constraint, FilterResults results) { 
     adapter.filteredUserList.clear(); 
     adapter.filteredUserList.addAll((ArrayList<Information>) results.values); 
     adapter.notifyDataSetChanged(); 

    } } 

內,這是怎麼離開這個片段使用這種方法

Search_View.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

              @Override 
              public boolean onQueryTextSubmit(String Text) { 

               Log.v(""+Text , " searchView TextSubmit"); 
               Log.d("tag", "notesAdapter=" + notesAdapter); 
               notesAdapter.getFilter().filter(Text); 


               return true; 
              } 



              @Override 
              public boolean onQueryTextChange(String newText) { 

               Log.v(""+newText , " searchView TextChange"); 
               Log.d("tag", "notesAdapter=" + notesAdapter); 
               notesAdapter.getFilter().filter(newText); 

               return true; 

              } 
             }); 

如果有人知道我在做什麼榮比請幫我,從昨天

+0

你肯定title屬性存儲在低位的情況下? – fillobotto

+0

@FilippoB你的意思是?我沒有得到你 – kingBach

+0

你比較'user.title'小寫字符串,但實際上'user.title'不是小寫 – fillobotto

回答

0

困在這裏得到了解決失蹤轉換我user.title爲小寫

protected FilterResults performFiltering(CharSequence constraint) { 
     filteredList.clear(); 
     final FilterResults results = new FilterResults(); 

     if (constraint == null || constraint.length() == 0) { 
      filteredList.addAll(originalList); 

     } else { 
      final String filterPattern = constraint.toString().toLowerCase().trim(); 

      for (final Information user : originalList) { 
       if (user.title.toLowerCase().contains(filterPattern)) { 
        filteredList.add(user); 
       } 
      } 
     }