【发布时间】:2017-11-05 21:14:33
【问题描述】:
我正在尝试在我的自定义适配器中使用 getFilter 方法实现搜索过滤器。
通过列表进行搜索有两种模式。
- 搜索项目的
title, - 搜索项目的
genre[]。
(但我这里只说genre)。
下面的代码运行良好,但我需要的是在genre[] 中搜索的更自定义的方式。
我想要实现的是:(我想要的):
multi-keyword搜索,每个类别用,分隔。例如:genre1,genre2
(我做了什么):
当我输入 genre1,genre2 时,它会给出在类型中具有此序列的项目,它不会给出 genre1,genre3,genre2 或只是 genre1。
你能帮忙吗?
getFilter:
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
dataList = (List<ProductLocal>) results.values;
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<ProductLocal> filteredList = new ArrayList<>();
constraint = constraint.toString().toLowerCase();
for (int i = 0; i < dataListFilter.size(); i++) {
ProductLocal dataNames = dataListFilter.get(i);
String genreStr = "";
for (String str : dataNames.getGenre()) {
genreStr += str + ",";
}
if (dataNames.getTitle().toLowerCase().startsWith(constraint.toString())
|| genreStr.toLowerCase().contains(constraint.toString())) {
filteredList.add(dataNames);
}
}
results.count = filteredList.size();
results.values = filteredList;
return results;
}
};
return filter;
}
【问题讨论】:
-
@DastakWall 你想要一个 kotlin 答案吗?
标签: android search arraylist filter adapter