Передать arraylist от одного действия к другому

Как передать ArrayList из одной активности в другую?

Ответ 1

Это зависит от типа arraylist

  • putIntegerArrayListExtra(String name, ArrayList<Integer> value)

  • putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

  • putStringArrayListExtra(String name, ArrayList<String> value)

  • putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)

Затем вы можете прочитать от вас следующее действие, заменив put на get ключевой строкой в ​​качестве аргумента, например

myIntent.getStringArrayListExtra("arrayPeople");

Ответ 2

Вы можете создать один пакет в списке патчей, который будет представлен в списке пакетов, предоставленном labeeb, и установить намерение здесь, это код для

Intent i = new Intent(this,name.class);
Bundle b = new Bundle();
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value);
//b.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value);
//b.putStringArrayListExtra(String name, ArrayList<String> value);
i.putExtra(String name,b);
startActivity(i);

И получите данные в другое действие, например

//pseudo code
Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name);

Ответ 3

По мне, создайте статический класс и поместите в него свой массив, пока вы переходите от одного действия к другому.

Когда вы достигнете другого действия, получите доступ к значению, которое вы сохранили в статическом классе.

UPDATE
Я со временем узнал, что это ужасная практика. Когда объекты стираются/воссоздаются, значения Static могут быть потеряны. и затем мы помещаем много данных в память тоже. Использование чего-либо, подобного Parcelable, является хорошей практикой.

Ответ 4

В аннулированном действии вы должны использовать

Bundle bundle = getIntent().getExtras();             
ArrayList<String> stringArray = bundle.getStringArrayList(ParentActivity.STRING_LIST);

где ParentActivity.STRING_LIST - ваша ключевая константа для списка.

Ответ 5

Когда вы создаете намерение. вы можете установить данные

intent.putExtra("keyName", "somevalue");

когда цель B начинается, вы можете получить данные

Bundle extras = getIntent().getExtras();
if(extras !=null)
{
   String value = extras.getString("keyName");
}