gpt4 book ai didi

android - 向 ListView 添加第二个过滤器

转载 作者:行者123 更新时间:2023-11-29 02:28:26 24 4
gpt4 key购买 nike

我的应用程序中有一个 fragment ,其中包含艺术家的自定义 ListView 。此自定义 ListView 连接到自定义过滤器,该过滤器通过搜索 View 过滤艺术家姓名。

现在我想添加第二个搜索 View ,它将通过另一个参数过滤自定义 ListView 。

我如何在我的适配器中创建第二个过滤器,以便每个搜索 View 都会以不同的方式过滤它,但有自己的参数?

这是当前过滤器:

@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);
}
}

这是来自搜索 View 的过滤器引用:

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;
}
});

最佳答案

所以我想出了一个解决这个问题的方法。我所做的是让不同的 SearchViews 通过表示数字(“1”、“2”、“3”...)的字符串定义相同的变量,这样我就可以区分它们。

然后,在 getFilter 下我添加了一个 if 语句来检查这个变量并返回所需的自定义 Filter 类。

那样,每个 SearchView 都会以不同的方式过滤列表。

希望对大家有帮助。

关于android - 向 ListView 添加第二个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com