我有一个过滤器,我只能在那里放一个完全匹配100%的值,但我想添加多个匹配。
我该怎么做?
@Override
protected FilterResults performFiltering(CharSequence constraint) {
constraint = constraint.toString().toLowerCase();
FilterResults result = new FilterResults();
if(constraint != null && constraint.toString().length() > 0) {
ArrayList<Country> filteredItems = new ArrayList<Country>();
for(int i = 0, l = originalList.size(); i < l; i++) {
Country country = originalList.get(i);
while(constraint.toString().toLowerCase().matches(
country.getRegion().toString().toLowerCase()))
filteredItems.add(country);
}
result.count = filteredItems.size();
result.values = filteredItems;
} else {
synchronized(this) {
result.values = originalList;
result.count = originalList.size();
}
}
return result;
}
答案 0 :(得分:0)
尝试:
String[] values = constraint.toString().split(",");
使用逗号或其他符号分隔您的值。
@Override protected FilterResults performFiltering(CharSequence constraint) { constraint = constraint.toString().toLowerCase(); FilterResults result = new FilterResults(); if(constraint != null && constraint.toString().length() > 0) { String[] values = constraint.toString().split(","); ArrayList<Country> filteredItems = new ArrayList<Country>(); for(int i = 0, l = originalList.size(); i < l; i++) { Country country = originalList.get(i); for (int j = 0; i<values.lenght(); j++) { while(values[j].toString().toLowerCase().matches(country.getRegion().toString().toLowerCase())) filteredItems.add(country); } } result.count = filteredItems.size(); result.values = filteredItems; } else { synchronized(this) { result.values = originalList; result.count = originalList.size(); } } return result; }