2016-01-22 232 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); 
       } 
      } 
     }