I\'m trying to pass an ArrayList from my first Activity to the next one. Basically, the first activity parses an XML file and creates an ArrayList with objects inside. What
I made this trick to send from first Activity to second.
The first activity
ArrayList<String> mylist = new ArrayList<String>();
Intent intent = new Intent(ActivityName.this, Second.class);
intent.putStringArrayListExtra("key", mylist);
startActivity(intent);
The second activity
To retrieve
ArrayList<String> list = getIntent().getStringArrayListExtra("key");
This could be totally bad practice and I wouldn't know any better, but you could declare the ArrayList as public and static. Then just access it with Activity.ArraylistName.
You can pass a String List using putStringArrayListExtra(String name, ArrayList<String> value)
if it is strings. Or, you could serialize List and then use putExtra(String name, Serializable value)
.
If you don't want to/can't use the above, you could use a central util class with a static reference to the List. Just set it in your first Activity and get it in the second.
I would do a toString on the array and pass it as an extra by doing a intent.putExtra("label". array.toString());
and then just recover it in the new activity.
You can set the scope of ArrayList at application level or you can do this using parcelable.
Complex types may be passed by means of Parcelable. An example is in this question:
Help with passing ArrayList and parcelable Activity