gpt4 book ai didi

java - 如何使用 Parcelable 传递带有 2D ArrayList 字段的自定义对象

转载 作者:行者123 更新时间:2023-12-05 05:21:23 25 4
gpt4 key购买 nike

在我的练习课中,我有一个 2D ArrayList。我已经设法使用 Parcelable 将所有字段从 Activity 传递到另一个字段。但是,我不知道如何使用 Parcelable 在我的对象中传递 2D ArrayList。

public class Exercise implements Parcelable{
private String name, equipmentRequired;
private ArrayList musclesWorked;
private HashMap personalBest;
private boolean selected;
private float minAccelLevel, minAccelChanges;
private ArrayList<ArrayList<Double>> sets = new ArrayList<>();

...

private Exercise(Parcel in) {
name = in.readString();
equipmentRequired = in.readString();
musclesWorked = in.readArrayList(ArrayList.class.getClassLoader());
personalBest = in.readHashMap(HashMap.class.getClassLoader());
selected = in.readInt() != 0;
// sets = ???????
}

public static final Parcelable.Creator<Exercise> CREATOR = newParcelable.Creator<Exercise>() {
public Exercise createFromParcel(Parcel in) {
return new Exercise(in);
}

public Exercise[] newArray(int size) {
return new Exercise[size];
}
};

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(equipmentRequired);
dest.writeList(musclesWorked);
dest.writeMap(personalBest);
dest.writeInt(selected ? 1 : 0);
// ?????
}

}

最佳答案

根据 Google Documentation还有这个other question , 我建议去

private Exercise(Parcel in) {
name = in.readString();
equipmentRequired = in.readString();
musclesWorked = in.readArrayList(ArrayList.class.getClassLoader());
personalBest = in.readHashMap(HashMap.class.getClassLoader());
selected = in.readInt() != 0;
sets = in.readArrayList(null);
}

这是因为,正如文档所述:

The given class loader will be used to load any enclosed Parcelables.

关于java - 如何使用 Parcelable 传递带有 2D ArrayList 字段的自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42984872/

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