1
我從xml加載了大約20,000個字符串,除此之外,它需要非常多的時間,直到應用程序真的讓我建議,當我鍵入Cra
它顯示我的第一個建議Valea Crabului
和我字符串中有Craiova
,但稍後會提示。autocompletetextview並不建議我想要什麼
AutoCompleteTextView
如何才能向我建議只匹配整個單詞的單詞?
我從xml加載了大約20,000個字符串,除此之外,它需要非常多的時間,直到應用程序真的讓我建議,當我鍵入Cra
它顯示我的第一個建議Valea Crabului
和我字符串中有Craiova
,但稍後會提示。autocompletetextview並不建議我想要什麼
AutoCompleteTextView
如何才能向我建議只匹配整個單詞的單詞?
如果您使用ArrayAdapter
您AutoCompleteTextView
,比在這裏你可以看到ArrayAdapter
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java
過濾器的默認實現從內部類的ArrayAdapter
ArrayFilter
:
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 {
所以您的過濾器將增加開始與結果的頂部,最相關的過濾結果您建議的字符串值。
你使用自定義過濾器嗎?你可以發佈一些代碼嗎? – 2012-07-20 07:36:47
@OvidiuLatcu我不使用自定義過濾器,我應該實現一個? – opc0de 2012-07-20 07:37:18
您的意思是Craiova沒有在「Cra」輸入中提示?即使您在建議列表中向下滾動,也不行?也許陣列的大小可能是一個問題。 – cosmincalistru 2012-07-20 07:44:00