gpt4 book ai didi

java - Parcelable 对象列表的包裹列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:50 26 4
gpt4 key购买 nike

所以我之前已经打包过列表,但是我正在尝试打包我的 GameBoard对象,它实际上有一个 List<List<Tile>> . Tile实现可打包,但我不确定如何打包 List<List> .这是我尝试过的:

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];
}
};

tile 类正确实现了 parcelable,我只是不确定如何读/写 List<List>>打包这个类的时候。有什么想法吗?

最佳答案

根据评论,我用我的自定义类扩展了 ArrayList 类并实现了 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];
}
};
}

并对我的其他类(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];
}
};
}

关于java - Parcelable 对象列表的包裹列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com