テキストボックスにテキストを入力するときに、自分のユーザーにオートコンプリート機能を持たせたいと思います。これはアンドロイドの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の上の制限()の制限のように思えます。うーん、それは動作しますが、あなたがそれを行うより良い方法を知っているならば、分かち合いましょう。ありがとう!