[英]Search Filter Recycler Adapter
我正在尝试在 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
在增加过滤项前Arraylist
尝试这个
public void setFilter(List<HymnDataModel> search_list) {
mHymnsList.clear();
mHymnsList.addAll(search_list);
or
mHymnsList = search_list;
//notify to reload
notifyDataSetChanged();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.