autocompletetextview不建议我想要什么

时间:2012-07-20 07:24:30

标签: android autocompletetextview

我从xml加载大约20,000个字符串,除了需要很长时间才能让应用程序真正给我一个建议,当我输入Cra时它会向我显示第一个建议Valea Crabului和我字符串中有Craiova,但稍后会提出。

AutoCompleteTextView如何仅向我建议与整个单词匹配的单词?

1 个答案:

答案 0 :(得分:3)

如果您对ArrayAdapter使用AutoCompleteTextView,那么您可以看到ArrayAdapter https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java的过滤器的默认实施

来自ArrayFilter的内部ArrayAdapter

for (int i = 0; i < count; i++) {
                final T value = values.get(i);
                final String valueText = value.toString().toLowerCase();

                // First match against the whole, non-splitted value
                if (valueText.startsWith(prefixString)) {
                    newValues.add(value);
                } else {
                    final String[] words = valueText.split(" ");
                    final int wordCount = words.length;

                    // Start at index 0, in case valueText starts with space(s)
                    for (int k = 0; k < wordCount; k++) {
                        if (words[k].startsWith(prefixString)) {
                            newValues.add(value);
                            break;
                        }
                    }
                }
            }

您看到过滤器没有按照您需要的相关性对匹配的项目进行排序,您必须为您的适配器编写自己的过滤器。

相反

                // First match against the whole, non-splitted value
                if (valueText.startsWith(prefixString)) {
                    newValues.add(value);
                } else {

您可能需要使用

                // First match against the whole, non-splitted value
                if (valueText.startsWith(prefixString)) {
                    newValues.add(0, value);
                } else {

因此,您的过滤器会将结果顶部的建议字符串作为最相关的过滤结果添加值。