Как системно свернуть ExpandableListView (или проблема при отображении ExpandableListView)

Рейтинг: 0Ответов: 0Опубликовано: 12.01.2015

Попробую подробно изложить свою проблему:
У меня в программе используется кастомный ExpandableListView. group элементы заполняются через ArrayList<Map<String, String>>, информация для которого берётся из SQL базы данных (назовём её ОСНОВНОЙ БД, и, предположим, у нас N group-элементов).

child элементы заполняются через ArrayList<ArrayList<Map<String, String>>>, информация для которых берётся из N различных других баз данных (назовём их ДОЧЕРНИЕ БД).

На каждом groupView у меня имеется кнопка DELETE, при нажатии на которую удаляется строка информации об этом group элементе из ОСНОВНОЙ БД, удаляется соответсвующая ДОЧЕРНЯЯ БД и заново обновляется ExpandableListView (т.е. отчищаются массивы, заново заполняются из БД, заново создаётся адаптер и присваивается ExpandableListView).

Всё работает хорошо, кроме одного момемта:
Если у меня

  1. group элемент всего один.
  2. Его второуровневый список развёрнут.
  3. И в этой ситуации я нажимаю 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, всё работает хорошо (т.е., как и ожидается, ничего не отобразиться (мы ведь уже удалили последний элемент, помните?)).

Стоит отметить, что если:

  1. group-элементов>1, то всё работает хорошо;
  2. group-элемент 1, но он свёрнут, то тоже всё работает хорошо.

В чём может быть проблема? Или как можно системно свернуть второуровневый список? (Знаю, плохое решение проблемы, но хоть какое-то.)

P.S. Код не скинул, т.к. его довольно много и в нескольких файлах.

Ответы

Ответов пока нет.