【问题标题】:autocomplete won't show dropdown list自动完成不会显示下拉列表
【发布时间】: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


【解决方案1】:

我解决了这个问题! 由于数据库中的空字段而发生此问题! FilterResult 函数的“for循环”改变如下

            for(ModelCategory item : FieldListFull) {
                try{
                    if (item.getNaqsh_jelo().toLowerCase().contains(filterPattern) && item.getNaqsh_jelo() != null){
                        suggestions.add(item);
                    }
                } catch (Exception e) {
                    continue;
                }
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多