Выбранный вами метод (создание статического экземпляра) БУДЕТ работать для такого объекта, как ArrayList
, так же, как вы это делали с примитивом (это создает Singleton).
Однако в большинстве случаев создание статических полей для передачи данных между операциями определенно не рекомендуется.Как примитивные данные, так и ArrayList<String>
могут быть переданы как дополнительные функции в намерении, которое вы используете для запуска другого действия.
private ArrayList<String> mArray;
private String mString;
private int mValue;
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("arrayListExtra", mArray);
intent.putExtra("stringExtra", mString);
intent.putExtra("intExtra", mValue);
startActivity(intent);
Все эти типы данных (и более) могут быть легко переданы в Intent
.Затем вы можете получить к ним доступ с другой стороны следующим образом:
Intent intent = getIntent();
ArrayList<String> array = intent.getStringArrayListExtra("arrayListExtra");
String string = intent.getStringExtra("stringExtra");
int value = intent.getIntExtra("intExtra", 0);
Если вы передаете данные в диалог, вы можете вызвать метод установки и передать все, что хотите, не беспокоясь о существующих границах.между мероприятиями.Например, с помощью специального диалогового окна реализуйте метод в своем диалоговом окне, чтобы вы могли установить значение перед его отображением.
public class MyDialog extends Dialog {
private ArrayList<String> mItems;
//All other methods of the dialog here
public void setItems(ArrayList<String> items) {
mItems = items;
}
}
Затем, в каком бы методе вашей деятельности вы ни планировали создать и показать диалоговое окно, выполните
//theArray is your ArrayList<String> with data.
MyDialog dialog = new MyDialog();
dialog.setItems(theArray);
dialog.show();
Обратите внимание, что именно так вы передадите список элементов в AlertDialog для отображения.В этих диалогах также есть методы, такие как setItems()
для передачи данных перед их отображением.Если ваш Activity управляет диалогом для вас (вы звоните showDialog()
из Activity), вызовите сеттер в onCreateDialog()
или onPrepareDialog()
... в зависимости от того, что больше подходит.
Надеюсь, чтопомогает!