There are a lot of ways transferring complex data between Android activities. Lets talking about couple of they. I going to talking about ways which used Bundle as data container.
1. FIRST. Pascelable interface
Bundle can contain java class which implemented Parcelable interface. Your class must implement this interface. After that bundle can contains this class.
2. SECOND. Put as JSON string
In some cases I transfer data between activities as JSON string.
This is not finished list of techniques. There are couple of then.