5

myで、 myActivityの基になるデータを変更してから、HashMapExpandableListView

((BaseAdapter) myExpandableListView.getAdapter()).notifyDataSetChanged();

ただし、これを呼び出した後にアプリがクラッシュし、IndexOutOfBoundsException.

アダプター内のどこでも同じデータにアクセスしていることを再確認しましたが、間違いは見つかりませんでした。

4

2 に答える 2

6

getChildrenCount少しデバッグした後、奇妙なことに、を呼び出した後に が呼び出されないことがわかりましたnotifyDataSetChanged。したがって、アダプターは、更新前と同じ数の子を取得することをまだ期待しています。いくつかの子を削除したので、それは間違った仮定であり、IndexOutOfBoundsException.

少し遊んだ後、 の場合、 getAdapter() ではなく を介しExpandableListViewsてアダプタにアクセスする必要があることがわかりました。getExpandableListAdapter()私のコードをに変更した後

((BaseExpandableListAdapter) myExpandableListView.getExpandableListAdapter()).notifyDataSetChanged();

すべてが正常に動作するようになりました。

これが仲間の開発者に役立つことを願っています。これを見つけて修正するのに数時間を費やしましたが、Web や StackOverflow でそれに関する情報はほとんど見つかりませんでした。

于 2013-06-24T10:45:55.113 に答える
0
listAdapter.notifyDataSetChanged()
               
val groupPosition = 0
expandableListView.expandGroup(groupPosition, true)

expandableListView.expandGroup()を呼び出した後にメソッドを追加することで問題を解決しましたnotifyDataSetChanged()

于 2021-07-29T03:33:59.470 に答える