SearchView忽略大写字母



我在应用程序项目中添加了一个带有listview的搜索视图。

我有一个问题,即搜索视图忽略所有大写字母,例如:

当我键入";pple";在searchviw中,列表视图显示了Apple行。但当我输入苹果或苹果时,它找不到苹果。当我将字符串从Apple更改为Apple时,它在我键入Apple时有效,但在我键入Appel时无效。。。

我希望我现在没有把它变得复杂:D

我使用以下过滤代码:

@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if(constraint == null || constraint.length() == 0){
filterResults.count = itemsModelsl.size();
filterResults.values = itemsModelsl;
}else{
List<itemsmodel> resultsModel = new ArrayList&lt;>();
String searchStr = constraint.toString().toLowerCase();
for(ItemsModel itemsModel:itemsModelsl){
if(itemsModel.getName().contains(searchStr) || itemsModel.getEmail().contains(searchStr)){
resultsModel.add(itemsModel);
filterResults.count = resultsModel.size();
filterResults.values = resultsModel;
}
}

}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
itemsModelListFiltered = (List<itemsmodel>) results.values;
notifyDataSetChanged();
}
};
return filter;
}

如果您需要更多代码,请告诉我。

提前谢谢。

BgDaniel

这是因为您降低了搜索输入的大小写,但没有降低项目名称本身的大小写。因此,当您键入"Apple"/"apple"时,搜索输入实际上只是小写版本:"apple"。另一方面,项目的名称是"Apple",因此无法匹配。

尝试:

...
if (itemsModel.getName().toLowerCase().contains(searchStr) || itemsModel.getEmail().toLowerCase().contains(searchStr)) {
...
}
...

相关内容

  • 没有找到相关文章

最新更新