問題の説明:
キーを押すたびに提案を表示する必要がある AutoCompleteTextView の問題に直面しています。問題は、提案のリストが、Google の提案機能のように動的であることです。これは、ユーザーが入力を続けると新しい提案が追加され、一致する古い提案がすべて表示されることを意味します。
例えば
「te」と書くと、「test1」や「test2」などの以前の提案と、Web API から取得する新しい提案が表示されます。Web APIが「お茶」と「緊張」という言葉を私に与えたとします。
これで、AutoCompleteTextView には文字列として「te」が含まれ、その下に 4 つの候補がすべて表示されます。
これはまさに私が探しているものです。
シンプルに見えますが、奇妙な動作を示しています。
グローバルに宣言しているデフォルトの ArrayAdapter クラスのインスタンスを使用しています。
arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,suggestions);
word.setAdapter(arrayAdapter);
提案はArrayListです。
WebApi から新しい結果を取得したら、単に呼び出します
arrayAdapter.notifyDataSetChanged();
これに添付されたデータ オブザーバーとビューを更新します (この場合は AutoCompleteListView)。
しかし、それは提案を閉じます。
使用しないときはnotifyDataSetChanged();
、入力した文字に関係なくすべての提案が表示されます。
多くの人が提案するカスタムフィルターで試してみましたが、notifyDataSetChanged() を使用できなかったため、どれも役に立ちませんでした。
混乱を避けるために画像を投稿しています。
なぜnotifyDataSetChanged();
機能しないのか混乱しています。同じ arrayAdapter インスタンスを持つリストの他の参照を使用していません。それが参照の問題かどうかは本当に疑問です。