Я только начал изучать Java около 3 месяцев назад, и это мой первый пост здесь, поэтому, пожалуйста, потерпите меня.
У меня есть несколько ArrayList, построенных из разобранного XML, которые по порядку напрямую связаны друг с другом. Позднее массивы помещаются в один сопоставленный ArrayList (groupData) для чтения с помощью SimpleAdapter, который создает список в графическом интерфейсе Android.
То, что я хочу сделать, это отсортировать список в алфавитном порядке на основе одного массива (arr_title), а остальные массивы останутся в синхронизированном с ним порядке. Неважно, где происходит сортировка, пока сортируется окончательный отображаемый список. Я ожидаю, что будет лучше отсортировать сопоставленный массив, как только он будет построен. Чем проще или легче понять код, тем лучше, но не нужно, чтобы сортировка шла слишком медленно. У меня есть около 140 объектов на массив, но это может расшириться, учитывая, что XML извлекается из Интернета.
Я часами искал в Google и пробовал некоторые вещи с небольшим прогрессом. Collections.sort (arr_title) будет сортировать один массив так, как я хочу, но затем другие массивы не совпадают и делают то же самое с другими массивами, очевидно, просто сортируют их по отдельности, как я не хочу. Я заметил упоминание об использовании типа TreeMap и Comparator для аналогичной сортировки, но не мог понять, как использовать их в этом случае, вероятно, потому что примеры не предоставили мне достаточно большой картины для понимания.
В приведенном ниже примере большинство вещей происходит после создания отдельных массивов.
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
Map<String, String> group;
int item = 0;
do {
group = new HashMap<String, String>();
group.put("title", arr_title.get(item));
group.put("desc", arr_desc.get(item));
group.put("num", Integer.toString(arr_num.get(item)));
groupData.add(group);
item++;
} while (item < arr_num.size());
SimpleAdapter adapter = new SimpleAdapter(this, groupData, android.R.layout.simple_list_item_2, new String[] {"title", "desc", "num"}, new int[]{android.R.id.text1, android.R.id.text2});
setListAdapter(adapter);