gpt4 book ai didi

android - 可搜索微调器不工作

转载 作者:太空狗 更新时间:2023-10-29 13:04:02 25 4
gpt4 key购买 nike

我有一个带有搜索功能的微调器。微调器具有诸如“你好”之类的项目。即;一个名称后跟一个连字符,然后是另一个名称。如果我们搜索连字符左侧的关键字,则微调器搜索工作正常。但是如果我们搜索连字符右侧的关键字,它将显示为空。有没有满足我要求的图书馆?或者如何实现这个?我目前正在使用这个库 com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1

最佳答案

问题是这个库中使用的过滤器是 ArrayAdapter 类的默认过滤器。

您最好的选择是为微调器数据创建自定义可过滤适配器。看看这个 question

解决连字符问题:过滤器看起来像

 private class ItemFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {

String filterString = constraint.toString().toLowerCase();

FilterResults results = new FilterResults();

final List<String> list = originalData;

int count = list.size();
final ArrayList<String> nlist = new ArrayList<String>(count);

String filterableString ;

for (int i = 0; i < count; i++) {
filterableString = list.get(i);
if (filterableString.toLowerCase().contains(filterString)) {
nlist.add(filterableString);
}
}

results.values = nlist;
results.count = nlist.size();

return results;
}

@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredData = (ArrayList<String>) results.values;
notifyDataSetChanged();
}

}
}

filterableString.toLowerCase().contains(filterString) 应该可以解决问题。但是,如果您想要更详细的方式,其中前缀应该是左侧或右侧连字 rune 本的 bigining。您可以这样进行:

for (int i = 0; i < count; i++) {
filterableString = list.get(i);
String[] parts = filterableString.split("-")
if(parts[0].startsWith(filterString)||parts[1].startsWith(filterString){
nlist.add(filterableString);
}
}

关于android - 可搜索微调器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50811466/

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