0
我需要通过getFilter方法过滤列表项,在我的Model类中,我有一个名为genre
的数组变量。在ListView中使用android搜索字符串数组中的搜索过滤器SearchView
这个流派有时是一个词,有时不止一个与,
分开。例如像:
android,iPhone,blackberry。
现在在我的代码时,我尝试在我的列表中搜索项目,它将只搜索第一个单词(机器人)。换句话说,如果我尝试搜索iPhone,这个项目将不会显示在我的新过滤列表中。
在下面的代码中,我知道我做错了,但你能帮我纠正它吗?
@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;
}
genreStr = genreStr.length() > 0 ? genreStr.substring(0,genreStr.length() - 2) : genreStr;
if (genreStr.toLowerCase().startsWith(constraint.toString())) {
filteredList.add(dataNames);
}
}
results.count = filteredList.size();
results.values = filteredList;
return results;
}
};
return filter;
}
我的另一个问题是:
我如何搜索项目与,
seperatted多于一个类型?
例如查询= android,blackberry
,并导致出现与具有这种两个流派
它适用于单个关键字搜索,但是,当我尝试执行'多关键字'搜索时,它将复制我的过滤列表,而不是第二个关键字的函数。 – DastakWall
如果逗号后有空格,则必须在过滤器字符串上进行修剪 – SAJ
仍然一样,但我会接受您的答案,因为您已经回答了我的主要问题,并且非常感谢。 – DastakWall