2011-05-19 18 views
2

テキストボックスにテキストを入力するときに、自分のユーザーにオートコンプリート機能を持たせたいと思います。これはアンドロイドのAutoCompleteTextViewで簡単に達成できます。当初、私は私のJavaコードで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> 

として/res/values/strings.xmlの私の文字列配列を構築し、私は私にいくつかのものを持っているとき、私は

// 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エラーが出ないので、メモリの問題のようには思えません。

編集:

ので、どうやらこの広く知られている問題は、

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

はどのように確認するために最初に彼のソリューションをしようとするつもりのgetResource()getStringArrayの上の制限()の制限のように思えます。うーん、それは動作しますが、あなたがそれを行うより良い方法を知っているならば、分かち合いましょう。ありがとう!

答えて

1

この問題も見つかりました。最終的には、私の配列をいくつかの要素に分割し、getResources()。getStringArray()を使ってそれぞれを読み込んでから、通常のJavaを使ってそれらをまとめてArrayListなどに結合しなければなりませんでした。

関連する問題