【发布时间】:2018-11-26 18:53:36
【问题描述】:
我的应用中有一个片段,其中包含艺术家的自定义列表视图。 此自定义列表视图连接到自定义过滤器,该过滤器通过搜索视图过滤艺术家姓名。
现在我想添加第二个搜索视图,它将通过另一个参数过滤自定义列表视图。
如何在我的适配器中创建第二个过滤器,以便每个搜索视图都会以不同的方式过滤它,但有自己的参数?
这是当前的过滤器:
@NonNull
@Override
public Filter getFilter() {
return nameFilter;
}
private Filter nameFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
copyList();
FilterResults results = new FilterResults();
ArrayList<String> suggestions = new ArrayList<>();
if (constraint == null || constraint.length()==0){
suggestions.addAll(namesFull);
}
else {
suggestions.clear();
String filterPattern = constraint.toString().toLowerCase().trim();
for (String s : namesFull){
if (s.toLowerCase().contains(filterPattern)){
suggestions.add(s);
}
}
}
results.values = suggestions;
results.count = suggestions.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
clear();
addAll((List)results.values);
notifyDataSetChanged();
}
};
private void copyList() {
if (namesFull.size()==0) {
namesFull.addAll(BandsList);
}
}
这是来自搜索视图的过滤器参考:
nameFilter.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String text) {
return false;
}
@Override
public boolean onQueryTextChange(String text) {
artistsAdapter.getFilter().filter(text);
artistsAdapter.notifyDataSetChanged();
return false;
}
});
【问题讨论】:
标签: android listview filter android-arrayadapter searchview