2011-05-19 62 views
2

我想爲我的用戶在文本框中輸入文本時具有自動完成功能。在android中使用AutoCompleteTextView可以輕鬆實現。最初,我建立/res/values/strings.xml我的字符串數組作爲android:AutoCompleteTextView的字符串數組大小限制

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string-array name="autocomplete_list"> 
    <item>text 1</item> 
    <item>text 2</item> 
    <item>... (many more) ...</item> 
    <item>text 1499</item> 
    <item>text 1500</item> 
</string-array> 
</resources> 

在我的Java代碼,我有

// load autocomplete list 
    String[] textList= getResources().getStringArray(R.array.autocomplete_list); 
    myAutoCompleteTextView.setAdapter(new ArrayAdapter<String>(this, R.layout.autocomplete_list, textList)); 

這工作得很好,當我只有幾件事情我串。但是,如果我的列表很長,說超過1000項,我得到運行時錯誤。應用程序將自行關閉,沒有任何警告(沒有應用程序強制關閉錯誤)。它只是消失。 logcat中沒有任何內容。

所以我超過Java中的字符串數組中的最大元素可索引?那是什麼導致了這個問題?如果是這樣,任何人都知道最大值是多少?它看起來不像內存問題,因爲我沒有得到OutOfMemory錯誤。

編輯:

因此很明顯,這是衆所周知的問題,似乎是對的getResource()getStringArray的限制()限制

Should I be using something other than getResource().getStringArray() to populate a large array?

將首先嚐試他的解決方案,看看如何。以及它的作品,但如果你知道一個更好的方式來做到這一點,請隨時分享。謝謝!

回答

1

我也發現這個問題。最後,我必須將我的數組拆分爲多個元素,使用getResources()。getStringArray()讀取每個元素,然後使用普通Java將它們連接在一起,形成一個ArrayList或類似的類。