Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。2万件23現在ListViewを使用してアプリを作っているのですが、adapterの更新で不可解な箇所がありましたので質問させていただきます。notifyDataSetChanged();}としています。データの更新があったらsetDataを呼び出してMyArrayAdapterを更新しているのですが、更新される場合とされない場合があります。更新されたデータだけgetViewが呼ばれず、ListViewに反映されない(元々入っていた要素に関しては'getView'が呼ばれている)MethodA、MethodBはMainThreadから実行している(各メソッド内でThread確認済み)ほとんど同じ処理であり、Listデータの数も更新されたものが渡されています。MyArrayAdapterが保持するListデータもMethodAの場合もMethodBの場合もsizeが更新されて数が増えているのですが、MethodBで実行すると新規で追加したデータに関してのみListViewに更新がかからない状態です。既存のデータに関してはgetViewが呼ばれます。MethodBの場合は表示が変更されません。//ここでlist.getCount()したがサイズが増えていない。}MethodAとMethodBは共にVolleyのJSONArray取得メソッドから呼び出されています。MethodBの実装についても記載した方が回答がしやすくなるかと思います。10:11AdapterクラスにはnotifyDataSetChanged()メソッドはないので、Adapterを具体的にどう実装されているのかという点も気になります。BaseAdapter継承ならこの方法で更新されますが、ArrayAdapter継承の場合は一度clear()してaddAll()なりする必要がありますし。12:44質問は後から編集できますので、上でコメントされているような実装の詳細を共有すると、回答をもらいやすいと思います。14:37コメント頂きありがとうございます。MethodAとMethodBの実装を追加いたしました。この行がコンパイルエラーになります。正しくはどう記述されたのでしょうか。票2推測になってしまうのですが、単に参照の問題だと思います。ArrayAdapterはコンストラクタで受け取ったリスト(配列のオーバーロードコンストラクタでは、Arrays.asList()を利用してリストに変換する)を、ListViewなどに表示するアダプタです。サブクラスを作る場合、「ArrayAdapterが管理するList<T>はprivateであり、サブクラスから参照を変更できない」という点に注意する必要があります。Referenceにあるように一度保持したリストに対して、add()、clear()、remove()などのメソッドで操作するアダプタクラスになります。リストそのものの参照を外部から置き換えたい場合には、BaseAdapterを継承した方が楽です。表題の事象が起こり得るとすれば、以下のような原因かと思います。MethodA()の呼び出し側で更新しているリストは、ArrayAdapterのコンストラクタに渡したリストの参照なので、ArrayAdapterが内部で管理しているリスト=ListViewが更新される。個の銅バッジ返信が遅くなり申し訳ありません。おっしゃる通り参照の問題だったようです。add,clear,removeを使用して書き換えたところ思った動作になりました。ありがとうございました。|1問題を再現できるコードが無いので、想像ですが:原因として思いつくのは、以下です。adapter.messageDetailListに置き換えている為、mDataの内容が、adapter.messageDataに追加されることは無いのでは、と思いました。notifyDataSetChanged();}が正しいのではないでしょうか。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。Activity?0ListViewのsetListAdapterがエラーになる。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。