Pass arraylist of user defined objects to Intent android

I have given implements serializable in both the classes, but am
getting unable to marshall.. run time error in the calling function at
line start activity. Please help how to proceed with!

Since you are using Serializable, you cannot do it like now. I suggest you to wrap your ArrayList to class for example named DataWrapper. This class also needs to implement Serializable and then you are able to pass ArrayList via Intent.

Example:

public class DataWrapper implements Serializable {

   private ArrayList<Parliament> parliaments;

   public DataWrapper(ArrayList<Parliament> data) {
      this.parliaments = data;
   }

   public ArrayList<Parliament> getParliaments() {
      return this.parliaments;
   }

}

And an usage:

Intent i = new Intent(...);
i.putExtra("data", new DataWrapper(yourArrayList));

and retrieving:

DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("data");
ArrayList<Parliament> list = dw.getParliaments();

Note:

There is also option to use Parcelable interface. If you will use it, you can put and retrieve your ArrayList with these methods:

intent.putParcelableArrayListExtra("key", ArrayList<T extends Parcelable> list);
getIntent().getParcelableArrayListExtra("key");

Generally is recommended to use Parcelable interface that is directly designated for passing objects through Activities but i usually use Serializable interface and it always make a trick.

Also be carefull about typos. You are putting object with key task and you should retrieve it with same key and not with tasklist.

Leave a Comment