如何解决SearchView忽略大写字母
我在我的应用程序项目中添加了带有listview的searchview。
我有问题,搜索视图会忽略所有大写字母,例如:
当我在searchviw中键入“ pple”时,列表视图显示Apple行。 但是当我键入Apple或apple时,它找不到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<>();
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;
}
如果您需要更多代码,请告诉我。
谢谢。
背景 丹尼尔
解决方法
这是因为您小写了搜索输入,而不是项目名称本身。因此,当您键入"Apple"/"apple"
时,搜索输入实际上只是小写的版本:"apple"
。另一方面,该商品的名称为"Apple"
,因此无法匹配。
尝试:
...
if (itemsModel.getName().toLowerCase().contains(searchStr) || itemsModel.getEmail().toLowerCase().contains(searchStr)) {
...
}
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。