我正在从 xml 加载大约 20,000 个字符串,除此之外,应用程序真正提出建议需要很长时间,当我键入Cra
它时,它会显示第一个建议Valea Crabului
并且我Craiova
在字符串中,但稍后会建议。
怎么能AutoCompleteTextView
只建议我匹配整个单词的单词?
我正在从 xml 加载大约 20,000 个字符串,除此之外,应用程序真正提出建议需要很长时间,当我键入Cra
它时,它会显示第一个建议Valea Crabului
并且我Craiova
在字符串中,但稍后会建议。
怎么能AutoCompleteTextView
只建议我匹配整个单词的单词?
如果您使用ArrayAdapter
的是, 则在这里您可以看到https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.javaAutoCompleteTextView
的过滤器的默认实现ArrayAdapter
从内部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 {
因此您的过滤器将在结果顶部添加以您建议的字符串开头的值作为最相关的过滤器结果。