質問: (Button)findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View view){ arrayList.add("a4"); arrayList.add("a5"); arrayList.add("a6"); //以下の他、入力候補を更新するメソッドを色々試すが、思うように更新されず・・・・ adapter.notifyDataSetChanged(); textView.setAdapter(adapter); } } - ・実装したい仕様 入力候補のデータを、都度追加したい(テストとして上記コードではボタンを押したタイミングで、データを追加) ・現状の状況 1:ボタンを押す前のドロップダウンリストの入力候補として"a1","a2","a3"が表示される。 2:ボタンを押した後のドロップダウンリストの入力候補も"a1","a2","a3"のみで、"a4","a5","a6"が追加されない。 3:1(AutoCompleteTextViewのドロップダウンリストを表示させる事)をせずに、ボタンを押した後に入力候補を表示させると"a1","a2","a3","a4","a5","a6"と追加された候補がドロップダウンリストに表示される。 実装したい動作としては、3ではなく、1の後に2の場合で入力候補追加となって欲しいのです。2と3の違いはドロップダウンリストを表示させるタイミングが違うという事ですが、ドロップダウンリストが表示された結果として起こっている事がわかりません。 どなたかお分かりの方、ご教示頂ければと思います。
回答: ArrayAdapter周りの実装を調べてみました。 MainActivityで持っているarrayListと、 ArrayAdapterが持っているListのインスタンスは、 コンストラクタの時点では、同じものを参照していそうですが、 途中で変わってしまう可能性も十分にありそうでした。 (ArrayFilterってのが内部で動いていて、そのあたりで参照が変わっていそう・・・) ArrayAdapter自体に、 add(T object) addAll(Collection extends T> collection) といったメソッドが用意されているので、 そちらを試してみてください。