I have a working Parcelable implementaion for all the fields in my Parcelable Class apart from List<List<String>>
class Employee implements Parcelable {
    List<List<String>> details;
    //.......
    protected Employee(Parcel in) {
        details = new ArrayList<List<String>>();
        // i know this is wrong just posting to clarify
        in.readList(details, List.class.getClassLoader());
        //......
    }
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(details);
        //.....
    }
    public int describeContents() {
        return 0;
    }
    public static final Parcelable.Creator<Employee> CREATOR = 
            new Parcelable.Creator<Employee>() {
        public Employee createFromParcel(Parcel in) {
            return new Employee(in);
        }
        public Employee[] newArray(int size) {
            return new Employee[size];
        }
    };
}
Exception:
05-10 19:07:44.072: E/AndroidRuntime(10661): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42a509e8: Unmarshalling unknown type code 3604535 at offset 268
                Extending ArrayList and implementing Parcelable on it worked for me.
public class ParcelableArrayList extends ArrayList<String> implements 
        Parcelable {
    private static final long serialVersionUID = -8516873361351845306L;
    public ParcelableArrayList(){
        super();
    }
    protected ParcelableArrayList(Parcel in) {
        in.readList(this, String.class.getClassLoader());
    }
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(this);
    }   
    public static final Parcelable.Creator<ParcelableArrayList> CREATOR = 
            new Parcelable.Creator<ParcelableArrayList>() {
        public ParcelableArrayList createFromParcel(Parcel in) {
            return new ParcelableArrayList(in);
        }
        public ParcelableArrayList[] newArray(int size) {
            return new ParcelableArrayList[size];
        }
    };
}
and Employee class
class Employee implements Parcelable {
    List<ParcelableArrayList> details;
    //.......
    protected Employee(Parcel in) {
        details = new ArrayList<ParcelableArrayList>();
        in.readTypedList(details,ParcelableArrayList.CREATOR);
        //......
    }
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(details);
        //.....
    }
    public int describeContents() {
        return 0;
    }
    public static final Parcelable.Creator<Employee> CREATOR = 
            new Parcelable.Creator<Employee>() {
        public Employee createFromParcel(Parcel in) {
            return new Employee(in);
        }
        public Employee[] newArray(int size) {
            return new Employee[size];
        }
    };
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With