У меня есть ListFragment
, поддерживаемый ArrayAdapter
, который заполняется Loader
. Когда пользователь нажимает на один из элементов, я хочу передать ссылку на выбранный элемент, а также остальные элементы списка на другой фрагмент. Мой вопрос: как мне получить все предметы из адаптера? Вот возможности, которые я вижу:
1. Сохраните ссылку на резервную копию List
Создайте адаптер так:
List<DomainObject> items = new ArrayList<DomainObject>();
listAdapter = new ArrayAdapter<DomainObject>(getActivity(), R.layout.mine, items);
а затем просто передать items
или его копию в следующую операцию.
Недостаток, который я вижу в этом, заключается в том, что я полагаюсь на недокументированный факт, что тот же список, который я передаю конструктору, содержит элементы позже.
2. Итерация через адаптер
Когда элемент щелкнут, пройдите через адаптер и создайте список. Это кажется ненужным количеством работы. Элементы содержатся в List
в адаптере, и я вручную копирую каждый элемент в новый список.
3. Сохраняйте отдельный список элементов при добавлении в адаптер
Перед добавлением элемента в адаптер добавьте его в отдельный список, который я поддерживаю в фрагменте. Это также бесполезно, поскольку список элементов копируется в ArrayAdapter
и фрагменте.