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

标签 java android multidimensional-array parcelable

在我的练习课中,我有一个 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/

相关文章:

python - 球体体积内点的规则分布

java - grpc v1.34.1 的客户端负载均衡,不推荐使用 nameResolverFactory

java - 我应该如何可视化我的代码结构?

java - 对象化4订单?

android - 如何在 FrameLayout 中将元素右对齐?

java - Android+Eclipse项目通过SVN共享?

Android Studio lint_baseline.xml 不排除很多它应该解决的问题

R:子集 N 维数组

javascript - 如何根据javascript中第一行的结果在二维数组上添加数字集

java - 将 XMP 写入多页 TIFF 的库