是否有一个简单的解决方案,同时为三个输入字段的过滤器列表?
要求是3个搜索字段将同时显示和激活,然后用户可以立即搜索三个字段中的任何一个。每次搜索都会自动缩小结果范围。
是否有针对此问题的算法或解决方案?
提前致谢。
试试这个,它适用于我的getFilter方法
if (androidVersion.name()(your 1st field).toLowerCase().contains(charString)
|| androidVersion.id()(your 2nd field).toLowerCase().contains(charString)
|| androidVersion.number()(your 3rd field).toLowerCase().contains(charString)
{
filteredList.add(androidVersion);
}
在您的适配器类中
private ArrayList<MyBean> videoList;//your arrayList
private ArrayList<MyBean> vList;//new list for search view
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
videoList = vList;
} else {
ArrayList<MyBean> filteredList = new ArrayList<>();
for (MyBean androidVersion : vList) {
//you can add your field here
if (androidVersion.name()/*(your 1st field)*/.toLowerCase().contains(charString)
|| androidVersion.id()/*(your 2nd field)*/.toLowerCase().contains(charString)
|| androidVersion.number()/*(your 3rd field)*/.toLowerCase().contains(charString))
{
filteredList.add(androidVersion);
}
}
videoList = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = videoList;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
videoList = (ArrayList<MyBean>) filterResults.values;
notifyDataSetChanged();
}
};
}