SearchView 忽略大写字母
SearchView ignore capital letter
我在我的应用程序项目中添加了带有列表视图的搜索视图。
我有问题,搜索视图会忽略所有大写字母,例如:
当我在 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;
}
如果您需要更多代码,请告诉我。
提前致谢。
背景
丹尼尔
这是因为您 lower-cased 搜索输入,而不是项目名称本身。所以当你键入 "Apple"/"apple"
时,搜索输入实际上只是 lower-cased 版本:"apple"
。另一方面,该项目的名称是 "Apple"
,因此无法匹配。
尝试:
...
if (itemsModel.getName().toLowerCase().contains(searchStr) || itemsModel.getEmail().toLowerCase().contains(searchStr)) {
...
}
...
我在我的应用程序项目中添加了带有列表视图的搜索视图。
我有问题,搜索视图会忽略所有大写字母,例如:
当我在 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;
}
如果您需要更多代码,请告诉我。
提前致谢。
背景 丹尼尔
这是因为您 lower-cased 搜索输入,而不是项目名称本身。所以当你键入 "Apple"/"apple"
时,搜索输入实际上只是 lower-cased 版本:"apple"
。另一方面,该项目的名称是 "Apple"
,因此无法匹配。
尝试:
...
if (itemsModel.getName().toLowerCase().contains(searchStr) || itemsModel.getEmail().toLowerCase().contains(searchStr)) {
...
}
...