【发布时间】:2018-06-25 04:22:32
【问题描述】:
我使用了自动完成,当数据库很小时,它工作得很好,但是当数据库增长时,自动完成的下拉菜单将不起作用(不显示)。为了更加确定,在自定义适配器中,在“FilterResults performFiltering”中进行“建议”,我写了一个“如果建议大小为 1,则中断”并且它有效。但我需要搜索所有数据库的行。以下是我的代码的一部分:
private Filter FieldFilter = new Filter(){
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<ModelCategory> suggestions = new ArrayList<>();
if(constraint == null || constraint.length() == 0){
suggestions.addAll(FieldListFull);
} else {
String filterPattern = constraint.toString().toLowerCase().trim();
for(ModelCategory item : FieldListFull) {
if (item.getNaqsh_jelo().toLowerCase().contains(filterPattern)){
suggestions.add(item);
if (suggestions.size() == 1{
break;
}
}
}
}
results.values = suggestions;
results.count = suggestions.size();
return results;
}
如果我不写“如果检查建议大小”,下面的 3 行
results.values = suggestions;
results.count = suggestions.size();
return results;
不会运行!!!!实际上,在 for 循环中间,FilterResult 函数没有错误停止运行并 PublishResult 运行,然后在 publishResult 中说“结果为空”! 下面是我的 PublishResult 函数:
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
clear();
try {
addAll((List) results.values);
}catch (Exception e){}
notifyDataSetChanged();
}
【问题讨论】:
-
什么时候可以从服务中获取自动完成值?
标签: android database autocomplete