It can be done MUCH simpler, without all the pain-in-the-ass of implementing
ArrayList (but NOT any
Serializable. So, you can put the entire list using
putExtra() and retrieve it using
getSerializableExtra(), as Sam said.
BUT, I want to add one more important thing: the object your array list stores has to also implement
Serializable... and all other complex objects that the object may contain (in your case none) must also implement that (so it's recursive - in order to serialize an object, you must be able to serialize all of its fields).
Now, you might be asking yourself why implementing
Serializable instead of
Parcelable when there are already methods for reading and writing array lists of parcelables?
Well... the difference is simplicity - just add
implements Serializable and optionally
private static final long serialVersionUID = SOME_CONSTANT and you're DONE! That is the reason why I never use
Parcelable - you can do all those things using
Serializable with literally 2 lines of code - instead of many method inheritances and all that stuff...