package com.example.sampleapp.app; import android.os.Parcel; import android.os.Parcelable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class GenericListParcelable implements Parcelable { private final List<String> stringList; private final List<Integer> intList; private GenericListParcelable(List<String> stringList, List<Integer> intList) { this.stringList = stringList; this.intList = intList; } public static GenericListParcelable create() { return new GenericListParcelable( Arrays.asList("a", "b", "c"), Arrays.asList(1,2,3,4) ); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; GenericListParcelable that = (GenericListParcelable) o; if (stringList != null ? !stringList.equals(that.stringList) : that.stringList != null) return false; return intList != null ? intList.equals(that.intList) : that.intList == null; } @Override public int hashCode() { int result = stringList != null ? stringList.hashCode() : 0; result = 31 * result + (intList != null ? intList.hashCode() : 0); return result; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeStringList(this.stringList); dest.writeList(this.intList); } protected GenericListParcelable(Parcel in) { this.stringList = in.createStringArrayList(); this.intList = new ArrayList<Integer>(); in.readList(this.intList, Integer.class.getClassLoader()); } public static final Creator<GenericListParcelable> CREATOR = new Creator<GenericListParcelable>() { @Override public GenericListParcelable createFromParcel(Parcel source) { return new GenericListParcelable(source); } @Override public GenericListParcelable[] newArray(int size) { return new GenericListParcelable[size]; } }; }