使用ArrayList的ArrayList时读写Parcel

我也尝试读取和写入这个 ArrayList 结构:ArrayList<ArrayList<Pair<Float,Float>>> points我已经看到唯一的方法是使用外部 ArrayList 内部的类,但在这种情况下我没有。这是我的完整课程,我该如何实施?


import android.os.Parcel;

import android.os.Parcelable;

import android.util.Pair;

import java.io.Serializable;

import java.util.ArrayList;


public class Cornice implements Serializable, Parcelable {


    private String number;

    private ArrayList<ArrayList<Pair<Float,Float>>> points;


    public Cornice(String n, ArrayList<ArrayList<Pair<Float,Float>>> p) {

        number = n;

        if (p!=null) points = new ArrayList<>(p);

        else points=new ArrayList<>();

    }


    protected Cornice(Parcel in) {

        number = in.readString();

        points = //MISSING

    }


    public String getNumber () {

        return number;

    }


    public ArrayList<ArrayList<Pair<Float,Float>>> getPoints () {

        return points;

    }


    public static final Creator<Cornice> CREATOR = new Creator<Cornice>() {

        @Override

        public Cornice createFromParcel(Parcel in) {

            return new Cornice(in);

        }


        @Override

        public Cornice[] newArray(int size) {

            return new Cornice[size];

        }

    };


    @Override

    public int describeContents() {

        return 0;

    }


    @Override

    public void writeToParcel(Parcel dest, int flags) {

        dest.writeString(number);

        //MISSING

    }

}


慕田峪9158850
浏览 87回答 1
1回答

慕慕森

Pair既不可打包,也不可序列化,因此您尝试做的事情将不起作用。您将必须更改用于将点保存为其他内容的数据结构。例如,您可以将其转换为如下所示:private ArrayList<ArrayList<Float[]>> points;甚至(如果您不想支持空值):private ArrayList<ArrayList<float[]>> points;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java