2017-10-16 126 views
-2

如下图所示,我试图在onQueryTextChange 上对我的回收站适配器执行搜索。搜索筛选器回收站适配器

newText = newText.toLowerCase(); 
List<HymnDataModel> search_list = new ArrayList<>(); 

for(HymnDataModel hymnDataModel : hymnDataList){ 
       String hymn_title = hymnDataModel.getHymnTitle().toLowerCase(); 
       String hymn_subTitle = hymnDataModel.getHymnSubTitle().toLowerCase(); 
       if (hymn_title.contains(newText) || hymn_subTitle.contains(newText)){ 
        search_list.add(hymnDataModel); 
       } 
      } 

我使用setFilter过滤适配器。

adapterRV.setFilter(search_list); 

这是我的适配器使用setfilter功能

public void setFilter(List<HymnDataModel> search_list) { 
    mHymnsList = new ArrayList<>(); 
    mHymnsList.addAll(search_list); 
    //notify to reload 
    notifyDataSetChanged(); 
} 

搜索工作得很好,onQueryTextChange ,但过滤适配器和显示的RecyclerView,当我点击过滤后/搜索我的recyclerview上的项目,它不打开该特定项目,而是打开另一个不在筛选列表中的项目。

+0

添加您的整个适配器代码的东西在这里之前Arraylist。 – Radhey

回答

0

试试这个。将search_list分配给现有的数组List。

public void setFilter(List<HymnDataModel> search_list) { 
    mHymnsList = search_list; 
    //notify to reload 
    notifyDataSetChanged(); 
} 
0

要附加过滤数据项的在您的Arraylist这就是为什么你的适配器显示项目,这不是过滤列表上。试试这个清除添加过滤项在您的Arraylist

试试这个

public void setFilter(List<HymnDataModel> search_list) { 
    mHymnsList.clear(); 
    mHymnsList.addAll(search_list); 

    or 
    mHymnsList = search_list; 

    //notify to reload 
    notifyDataSetChanged(); 
}