2

AutoCompleteTextView があり、入力にスペースを追加するまでうまく機能します。たとえば、多くの歴史的出来事のリストがあるとします (バトル オブ ブリテン (1940 年)、バルジの戦い (1944 年)、[たくさんの戦いを挿入]、ナポレオンの致命的な行進 (1812 年)、[他の歴史的出来事をたくさん挿入]) .

「Battle」や「battle」と入力すると、すべての戦闘の一覧が表示され (上限があるようですが)、「britain」と入力すると、結果に「バトル オブ ブリテン (1940)」が表示されます。しかし、「戦闘」後にスペースに入ると、すべての結果エントリが消えます。

this以外に、このトピックに関する有用な投稿や質問が実際に見つからないことを読みましたが、答えはありませんでした。

スペースの挿入後に AutoCompleteTextView をオートコンプリートし続ける方法はありますか?

編集:コードを追加するポイントは実際にはわかりません。これは、文字列を含むアダプターを備えた AutoCompleteTextView に過ぎないためですonCreate()

auto = (AutoCompleteTextView) findViewById(R.id.auto);
String[] events = getListOfEvents();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, events);
auto.setAdapter(adapter);

単純にgetListOfEvents()読み取り、すべての履歴イベントをString[]

4

1 に答える 1

4

そのスペース文字を挿入すると、オートコンプリートが壊れます。これは、フードの下でAutoCompleteTextView(ArrayAdapterあなたの場合) に設定されているアダプターのフィルターを使用するためです。デフォルトのフィルターは、ArrayAdapterスペースを区切り文字として使用して、各アダプターの行のテキストを単語に分割し、フィルター入力に対してテストします。入力フィルター (スペースを含む) が行のどの単語とも一致しないため (これらの単語の末尾にスペースがないため)、これは結果を提供しません。たとえば、行「Battle of Britain」Battle」と一致しません。「 Battle」は「Battle」「of」、または「Britain」のいずれの単語とも一致しないためです。これは、" " の後の最初のテキストを分割した結果です。

それを機能させたい場合は、単語の後のスペースを考慮したAdapterを返す独自のものを実装する必要があります。Filter

于 2012-10-23T12:37:44.203 に答える