我从xml加载大约20,000个字符串,除了需要很长时间才能让应用程序真正给我一个建议,当我输入Cra
时它会向我显示第一个建议Valea Crabului
和我字符串中有Craiova
,但稍后会提出。
AutoCompleteTextView
如何仅向我建议与整个单词匹配的单词?
答案 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 {
因此,您的过滤器会将结果顶部的建议字符串作为最相关的过滤结果添加值。