我正在尝试在onQueryTextChange上对我的Recycler适配器执行搜索 如下图所示。
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 :(得分:0)
请尝试此操作。将search_list分配给现有的数组列表。
public void setFilter(List<HymnDataModel> search_list) {
mHymnsList = search_list;
//notify to reload
notifyDataSetChanged();
}
答案 1 :(得分:0)
您要在Arraylist
中附加已过滤的数据项,这是因为您的适配器显示的项目不在已过滤的列表中。在Arraylist
Arraylist
试试这个
public void setFilter(List<HymnDataModel> search_list) {
mHymnsList.clear();
mHymnsList.addAll(search_list);
or
mHymnsList = search_list;
//notify to reload
notifyDataSetChanged();
}