передать arraylist от одного действия к другому - PullRequest
10 голосов
/ 24 января 2011

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

Ответы [ 5 ]

41 голосов
/ 24 января 2011

Зависит от типа 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");
3 голосов
/ 24 января 2011

Вы можете создать один пакет в списке расставленных массивов, предоставленных 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);
0 голосов
/ 01 июня 2014

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

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

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

0 голосов
/ 24 января 2011

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

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

ОБНОВЛЕНИЕ
Со временем я понял, что это ужасная практика.Когда объекты стираются / воссоздаются, статические значения могут быть потеряны.а затем мы помещаем много данных в память тоже.Использование чего-либо вроде Parcelable - хорошая практика

0 голосов
/ 24 января 2011

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

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

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

Bundle extras = getIntent().getExtras();
if(extras !=null)
{
   String value = extras.getString("keyName");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...