搜索筛选器回收站适配器
问题描述:
如下图所示,我试图在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上的项目,它不打开该特定项目,而是打开另一个不在筛选列表中的项目。
答
试试这个。将search_list分配给现有的数组List。
public void setFilter(List<HymnDataModel> search_list) {
mHymnsList = search_list;
//notify to reload
notifyDataSetChanged();
}
答
要附加过滤数据项的在您的Arraylist
这就是为什么你的适配器显示项目,这不是过滤列表上。试试这个清除添加过滤项在您的Arraylist
试试这个
public void setFilter(List<HymnDataModel> search_list) {
mHymnsList.clear();
mHymnsList.addAll(search_list);
or
mHymnsList = search_list;
//notify to reload
notifyDataSetChanged();
}
添加您的整个适配器代码的东西在这里之前
Arraylist
。 – Radhey