Parcel Lista de Lista de objeto Parcelable
Así que he parcelado listas antes, sin embargo, estoy tratando de paquete de mi GameBoard
objeto, que en realidad tiene una List<List<Tile>>
. Tile
mosaico implementa parcelable, pero no estoy seguro exactamente cómo parcelar el List<List>
. Esto es lo que he probado:
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]; } };
La clase de mosaico implementa correctamente parcelable, no estoy exactamente seguro de cómo leer / escribir la List<List>>
al parcelar esta clase. ¿Algunas ideas?
- ¿Puede alguien usar el mismo prefijo de nombre de paquete?
- ¿Guarda Android los archivos .apk? ¿si es así, donde?
- ¿Cómo evito que Android Studio colapse automáticamente mis paquetes en la navegación de proyectos?
- Convención de paquetes Java
- Pasar arraylist de objetos definidos por el usuario a Intent android
- ¿Pueden dos aplicaciones diferentes tener el mismo nombre de paquete?
- Cómo enumerar pares de valores clave de un paquete
- ActivityNotFoundException cuando targetClass del paquete diferente en PreferenceScreen
- ¿Crear una biblioteca para el desarrollo de Android?
- Cómo crear mi propia biblioteca android y alojarla
- Despliegue del parcelero dando datos incorrectos
- Iniciar actividad desde otro paquete
- Intent es muy lento para lanzar una nueva Actividad :(
Basándome en los comentarios, extendí la clase ArrayList
con mi clase personalizada e implementé parcelable:
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]; } }; }
Y cambios leves a mi otra clase:
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]; } }; }
- GestureDetector.SimpleOnGestureListener. ¿Cómo puedo detectar un evento ACTION_UP?
- Errores del emulador después de la actualización a Studio 1.4