myで、 myActivity
の基になるデータを変更してから、HashMap
ExpandableListView
((BaseAdapter) myExpandableListView.getAdapter()).notifyDataSetChanged();
ただし、これを呼び出した後にアプリがクラッシュし、IndexOutOfBoundsException
.
アダプター内のどこでも同じデータにアクセスしていることを再確認しましたが、間違いは見つかりませんでした。
myで、 myActivity
の基になるデータを変更してから、HashMap
ExpandableListView
((BaseAdapter) myExpandableListView.getAdapter()).notifyDataSetChanged();
ただし、これを呼び出した後にアプリがクラッシュし、IndexOutOfBoundsException
.
アダプター内のどこでも同じデータにアクセスしていることを再確認しましたが、間違いは見つかりませんでした。
getChildrenCount
少しデバッグした後、奇妙なことに、を呼び出した後に が呼び出されないことがわかりましたnotifyDataSetChanged
。したがって、アダプターは、更新前と同じ数の子を取得することをまだ期待しています。いくつかの子を削除したので、それは間違った仮定であり、IndexOutOfBoundsException
.
少し遊んだ後、 の場合、 getAdapter() ではなく を介しExpandableListViews
てアダプタにアクセスする必要があることがわかりました。getExpandableListAdapter()
私のコードをに変更した後
((BaseExpandableListAdapter) myExpandableListView.getExpandableListAdapter()).notifyDataSetChanged();
すべてが正常に動作するようになりました。
これが仲間の開発者に役立つことを願っています。これを見つけて修正するのに数時間を費やしましたが、Web や StackOverflow でそれに関する情報はほとんど見つかりませんでした。
listAdapter.notifyDataSetChanged()
val groupPosition = 0
expandableListView.expandGroup(groupPosition, true)
expandableListView.expandGroup()
を呼び出した後にメソッドを追加することで問題を解決しましたnotifyDataSetChanged()
。