Добрый вечер.
Не могу понять, почему для каждой группы в ExpandableListView назначается одна и та же коллекция элементов?
Дано:
1. Массив групп.
2. Массивы элементов, которые должны быть в группах.
3. Массив массивов элементов, которые должны быть в группах (главный массив).
Алгоритм:
1. Заполняем коллекцию из массива групп.
2. Из главного массива из каждого внутреннего массива заполняем отдельные коллекции.
3. Добавляем эти коллекции в одну большую коллекцию.
На выходе почему-то в каждой группе совершенно одинаковый набор элементов. Буду весьма благодарен за помощь!
String[] groups = new String[] {"Первая группа", "Вторая группа"};
String[] First = new String[] {"Один", "Два", "Три", "Четыре"};
String[] Second = new String[] {"Пять", "Шесть", "Семь", "Восемь", "Девять"};
String[] [] Themes = new String[] [] {First, Second};
ArrayList<Map<String, String>> groupData;
// коллекция для элементов одной группы
ArrayList<Map<String, String>> childDataItem;
// общая коллекция для коллекций элементов
ArrayList<ArrayList<Map<String, String>>> childData;
// в итоге получится childData = ArrayList<childDataItem>
// список аттрибутов группы или элемента
Map<String, String> m;
// заполняем коллекцию групп из массива с названиями групп
groupData = new ArrayList<Map<String, String>>();
for (String group : groups) {
// заполняем список аттрибутов для каждой группы
m = new HashMap<String, String>();
m.put("groupName", group); // имя компании
groupData.add(m);
}
// список аттрибутов групп для чтения
String groupFrom[] = new String[] {"groupName"};
// список ID view-элементов, в которые будет помещены аттрибуты групп
int groupTo[] = new int[] {R.id.theme_item};
// создаем коллекцию для коллекций элементов
childData = new ArrayList<ArrayList<Map<String, String>>>();
childDataItem = new ArrayList<Map<String, String>>();
for (int i = 0; i < 2; i++) {
for (int j = 0; j < Themes[i].length; j++) {
m = new HashMap<String, String>();
m.put("subtheme", Themes[i][j]);
childDataItem.add(m);
}
childData.add(childDataItem);
}
// список аттрибутов элементов для чтения
String childFrom[] = new String[] {"subtheme"};
// список ID view-элементов, в которые будет помещены аттрибуты элементов
int childTo[] = new int[] {android.R.id.text1};
SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
getActivity(),
groupData,
R.layout.theme_item_title,
groupFrom,
groupTo,
childData,
android.R.layout.simple_list_item_1,
childFrom,
childTo);
ExpandableListView elvMain;
elvMain = (ExpandableListView) v.findViewById(R.id.elvMain);
elvMain.setAdapter(adapter);