Based on the comments, I extended the ArrayList class with my special class and implemented it logically:
public class TileList extends ArrayList<Tile> implements Parcelable { public TileList(){ super(); } protected TileList(Parcel in) { in.readTypedList(this, Tile.CREATOR); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeTypedList(this); } public static final Parcelable.Creator<TileList> CREATOR = new Parcelable.Creator<TileList>() { public TileList createFromParcel(Parcel in) { return new TileList(in); } public TileList[] newArray(int size) { return new TileList[size]; } }; }
and small changes in my other class:
public class GameBoard implements Parcelable { private String _id; public String getId() { return _id; } public void setId(String id) { _id = id; } private List<TileList> _tiles; public List<TileList> getTiles() { return _tiles; } public void setTiles(List<TileList> tiles) { _tiles = tiles; } public GameBoard(Parcel in) { _id = in.readString(); _tiles = new ArrayList<>(); in.readTypedList(_tiles, TileList.CREATOR); } public GameBoard() { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeString(_id); parcel.writeTypedList(_tiles); } public static final Parcelable.Creator<GameBoard> CREATOR = new Parcelable.Creator<GameBoard>() { public GameBoard createFromParcel(Parcel in) { return new GameBoard(in); } public GameBoard[] newArray(int size) { return new GameBoard[size]; } }; }
source share