Android: как передать ArrayList <object>из одного вида деятельности в другой - PullRequest
2 голосов
/ 22 июня 2011

Объект в массиве определен во внешней библиотеке. Объект содержит некоторые значения типа int, а также float [].

Как я могу передать весь ArrayList из одного действия в другое? Спасибо!

Кстати, у меня нет управления классом объекта.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Это зависит от типа объекта, который находится в списке массивов.Если у вас есть контроль над ним и он может реализовывать Parcelable, тогда вы можете использовать Intent.putParcelableArrayListExtra.

Другой подход - расширить Application и сохранить там свой ArrayList.Затем его не нужно передавать в Intent, и все действия в приложении могут получить к нему доступ, вызвав getApplication().Объект приложения будет сохраняться в течение всего срока действия приложения, как и любые данные, хранящиеся в нем.

РЕДАКТИРОВАТЬ:

Чтобы использовать объект приложения для этого:

  1. Напишите класс (назовем его MyApplication), который расширяет android.app.Application.Объявите поле (назовем его array) для хранения списка массивов.
  2. Укажите имя MyApplication в теге манифеста <application>.Экземпляр MyApplication будет создан системой при создании процесса для вашего приложения.
  3. Любое действие, которое хочет получить доступ к полю, может использовать ((MyApplication) getApplication()).array.Вы инициализируете его в первом действии и извлекаете его во втором.

Еще один совершенно другой подход - объявить статический синглтон в некотором классе.Документы фактически рекомендуют это по сравнению с Application подклассов как более модульные.Это своего рода хак, потому что это в основном объявление глобальной переменной.Но я полагаю, что это не более чем хак, чем помещение случайных данных в объект Application.

0 голосов
/ 22 июня 2011
Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("nameOfArray",YOUR_ARRAY_LIST);
startActivity(intent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...