Parcelable List that contains a custom object

android, java, parcelable

Solution

Your `Shop` class should implement `Parcelable` and you should use

public Offer(Parcel in) {
    this.id  = in.readInt();
    this.title = in.readString();
    this.myShop = in.readParcelable(Shop.class.getClassLoader());
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(this.id);
    dest.writeString(this.title);
    dest.writeParcelable(this.myShop, flags);
}

Problem

I am trying to pass data (`ArrayList`) between `Activities` on `Android` All works fine when the class that implements `Parcelable`doesn´t contains custom objects (Shop), but what do I have to do if my class contains one? Shop ``` public Shop(Parcel in) { this.id = in.readString(); this.name = in.readString(); this.type = in.readString(); this.lat= in.readDouble(); this.long= in.readDouble(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.id); dest.writeString(this.name); dest.writeString(this.type); dest.writeDouble(this.lat); dest.writeDouble(this.long); } @SuppressWarnings("rawtypes") public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Shop createFromParcel(Parcel in) { return new Shop(in); } public Shop[] newArray(int size) { return new Shop[size]; } }; ``` And here is my other class Offer which is the one that contains an object of Shop ``` public Offer(Parcel in) { this.id = in.readInt(); this.title = in.readString(); this.myShop = in.read.......(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.id); dest.writeString(this.title); dest.write......(this.myShop); } ``` Which data type should I read and write ? Thank you very much!

Original source