执行performFiltering时第一个字符返回null的限制

13

我为 AutoCompleteTextView 编写了一个自定义过滤器。它运行良好,只有一个小问题。在 performFiltering 上的约束在第一个字符上为 null。这意味着仅当第二个字符放入 AutoCompleteTextView 时,过滤过程才会开始。

以下是过滤器的代码:

private Filter nameFilter = new Filter() {
    public String convertResultToString(Object resultValue) {
        String fullName = ((User)(resultValue)).facebookName; 
        return fullName;
    }

    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        if(constraint != null) {
            suggestions.clear();
            for (User friend : allFriends) {
                if(friend.facebookName.toLowerCase().contains(constraint.toString().toLowerCase())){
                    suggestions.add(friend);
                }
            }
            FilterResults filterResults = new FilterResults();
            filterResults.values = suggestions;
            filterResults.count = suggestions.size();
            return filterResults;
        } else {
            return new FilterResults();
        }
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        ArrayList<User> filteredList = (ArrayList<User>) results.values;
        if(results != null && results.count > 0) {
            clear();
            for (User friend : filteredList) {
                add(friend);
            }
            notifyDataSetChanged();
        }

    }
};

有人可以帮我解决这个问题吗?使得过滤器从第一个字符开始过滤。

1个回答

37

threshold设置为1:

autoCompleteTextView.setThreshold(1)
指定用户在编辑框中键入的最小字符数,才会显示下拉列表。当阈值小于或等于0时,将应用1的阈值。

android:completionThreshold="1" 也可以在布局中完成 - Lucas E. Saavedra
@sanmrad对我来说还没有解决,你能详细说明一下最小字符数吗? - Nikunj Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接