Передача ArrayList с объектами в новую активность? - PullRequest
9 голосов
/ 29 апреля 2011

Я пытаюсь передать ArrayList из моей первой Деятельности в следующую. По сути, первое действие анализирует файл XML и создает ArrayList с объектами внутри. То, что я хочу сделать, это отправить этот ArrayList ко второму виду деятельности и показать некоторые данные объекта в ListView.

Я думал сделать это с намерением, но похоже, что только примитивные типы данных обычно передаются через намерения. Это правильно?

Если так, что было бы лучшим решением для передачи данных? Конечно, Android должен что-то делать, чтобы иметь возможность делать подобные вещи.

Любая помощь / примеры кода действительно приветствуются ..

Спасибо

EDIT:

Я решил это, сначала создав и вызвав намерение, и только проанализировав XML-код в действии, которое я вызвал. Таким образом, мне больше не нужно было пропускать предметы. Но для тех, кто заинтересован, вы можете прочитать о том, как передавать данные через действия, здесь.

Ответы [ 6 ]

5 голосов
/ 29 апреля 2011

Сложные типы могут передаваться с помощью Parcelable.Пример в этом вопросе:

Помощь с передачей ArrayList и parcelable Activity

2 голосов
/ 29 апреля 2011

Я бы сделал toString для массива и передал бы его как дополнительное, выполнив intent.putExtra("label". array.toString());, а затем просто восстановил бы его в новом действии.

1 голос
/ 29 апреля 2011

Это может быть абсолютно плохой практикой, и я бы не знал ничего лучше, но вы могли бы объявить ArrayList как открытый и статический.Затем просто получите к нему доступ через Activity.ArraylistName.

1 голос
/ 29 апреля 2011

Вы можете передать список строк, используя putStringArrayListExtra(String name, ArrayList<String> value), если это строки.Или вы можете сериализовать List и затем использовать putExtra(String name, Serializable value).

. Если вы не хотите / не можете использовать вышеперечисленное, вы можете использовать центральный класс util со статической ссылкой на List.Просто установите это в своем первом Деятельности и получите это во втором.

0 голосов
/ 16 марта 2014

Я сделал этот трюк для отправки из первого занятия во второе.

Первое занятие

ArrayList<String> mylist = new ArrayList<String>();  
Intent intent = new Intent(ActivityName.this, Second.class);
intent.putStringArrayListExtra("key", mylist);
startActivity(intent);

Второе занятие

Для извлечения

ArrayList<String> list =  getIntent().getStringArrayListExtra("key");
0 голосов
/ 29 апреля 2011

Вы можете установить область действия ArrayList на уровне приложения или сделать это с помощью parcelable.

...