Parcelable Object List Parcel List

So, I have summary lists, but I'm trying to put my GameBoard object, which actually has a List<List<Tile>> . Tile is implemented, but I don’t know exactly how to send a List<List> . Here is what I tried:

 public class GameBoard implements Parcelable { private String _id; public String getId() { return _id; } public void setId(String id) { _id = id; } private List<List<Tile>> _tiles; public List<List<Tile>> getTiles() { return _tiles; } public void setTiles(List<List<Tile>> tiles) { _tiles = tiles; } public GameBoard(Parcel in) { _id = in.readString(); in.readList(_tiles, ArrayList.class.getClassLoader()); } public GameBoard() { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeString(_id); parcel.writeList(_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]; } }; 

The tile class is correctly implemented, I'm just not quite sure how to read / write List<List>> when distributing this class. Any ideas?

+5
source share
1 answer

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]; } }; } 
+1
source

All Articles