【问题标题】:Read and write Parcel when using ArrayList of ArrayList使用ArrayList的ArrayList时读写Parcel
【发布时间】:2020-01-04 11:29:12
【问题描述】:

我也在尝试读写这个 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
    }
}

【问题讨论】:

  • 您确定需要包裹吗? Java 序列化自动工作。
  • 我确定。我在 ArrayList 中使用 Pair 类,并且只有 Serializable 我得到“Parcelable 遇到 IOException writing serializable object ...”错误

标签: java android arraylist parcelable


【解决方案1】:

Pair 既不是 Parcelable 也不是 Serializable,所以你试图做的事情是行不通的。您将不得不更改用于将点保存到其他内容的数据结构。例如,您可以将其转换为:

private ArrayList<ArrayList<Float[]>> points;

甚至(如果您不想支持空值):

private ArrayList<ArrayList<float[]>> points;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2017-01-13
    • 2020-05-06
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多