12

問題の説明:

キーを押すたびに提案を表示する必要がある 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 インスタンスを持つリストの他の参照を使用していません。それが参照の問題かどうかは本当に疑問です。

4

2 に答える 2