Как системно свернуть ExpandableListView (или проблема при отображении ExpandableListView)
Попробую подробно изложить свою проблему:
У меня в программе используется кастомный ExpandableListView.
group элементы заполняются через ArrayList<Map<String, String>>
, информация для которого берётся из SQL базы данных (назовём её ОСНОВНОЙ БД, и, предположим, у нас N group-элементов).
child элементы заполняются через ArrayList<ArrayList<Map<String, String>>>
, информация для которых берётся из N различных других баз данных (назовём их ДОЧЕРНИЕ БД).
На каждом groupView у меня имеется кнопка DELETE, при нажатии на которую удаляется строка информации об этом group элементе из ОСНОВНОЙ БД, удаляется соответсвующая ДОЧЕРНЯЯ БД и заново обновляется ExpandableListView (т.е. отчищаются массивы, заново заполняются из БД, заново создаётся адаптер и присваивается ExpandableListView).
Всё работает хорошо, кроме одного момемта:
Если у меня
- group элемент всего один.
- Его второуровневый список развёрнут.
- И в этой ситуации я нажимаю DELETE программа выдаёт ошибку.
logcat:
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) at java.util.ArrayList.get(ArrayList.java:304) at ru.uskov.dmitry.colors.MyExpListAdapter.getChildView(MyExpListAdapter.java:99) .....
Видно, что ошибка возникает при отображении списка. При этом, после того, как программа выдаст ошибку и завершиться, я опять запущу активити с этим listView, всё работает хорошо (т.е., как и ожидается, ничего не отобразиться (мы ведь уже удалили последний элемент, помните?)).
Стоит отметить, что если:
- group-элементов>1, то всё работает хорошо;
- group-элемент 1, но он свёрнут, то тоже всё работает хорошо.
В чём может быть проблема? Или как можно системно свернуть второуровневый список? (Знаю, плохое решение проблемы, но хоть какое-то.)
P.S. Код не скинул, т.к. его довольно много и в нескольких файлах.