How can I make my custom objects Parcelable? How can I make my custom objects Parcelable? android android

How can I make my custom objects Parcelable?


You can find some examples of this here, here (code is taken here), and here.

You can create a POJO class for this, but you need to add some extra code to make it Parcelable. Have a look at the implementation.

public class Student implements Parcelable{        private String id;        private String name;        private String grade;        // Constructor        public Student(String id, String name, String grade){            this.id = id;            this.name = name;            this.grade = grade;       }       // Getter and setter methods       .........       .........       // Parcelling part       public Student(Parcel in){           String[] data = new String[3];           in.readStringArray(data);           // the order needs to be the same as in writeToParcel() method           this.id = data[0];           this.name = data[1];           this.grade = data[2];       }       @Оverride       public int describeContents(){           return 0;       }       @Override       public void writeToParcel(Parcel dest, int flags) {           dest.writeStringArray(new String[] {this.id,                                               this.name,                                               this.grade});       }       public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {           public Student createFromParcel(Parcel in) {               return new Student(in);            }           public Student[] newArray(int size) {               return new Student[size];           }       };   }

Once you have created this class, you can easily pass objects of this class through the Intent like this, and recover this object in the target activity.

intent.putExtra("student", new Student("1","Mike","6"));

Here, the student is the key which you would require to unparcel the data from the bundle.

Bundle data = getIntent().getExtras();Student student = (Student) data.getParcelable("student");

This example shows only String types. But, you can parcel any kind of data you want. Try it out.

EDIT: Another example, suggested by Rukmal Dias.


Here is a website to create a Parcelable Class from your created class:

http://www.parcelabler.com/


IntelliJ IDEA and Android Studio have plugins for this:

These plugins generate Android Parcelable boilerplate code based on fields in the class.

Plugin demo