Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ArrayList的ArrayList时读写包裹_Java_Android_Arraylist_Parcelable - Fatal编程技术网

Java 使用ArrayList的ArrayList时读写包裹

Java 使用ArrayList的ArrayList时读写包裹,java,android,arraylist,parcelable,Java,Android,Arraylist,Parcelable,我也在尝试读写这个结构化的ArrayList:ArrayList points我知道唯一的方法是在外部ArrayList中使用类,但在这种情况下,我没有这样做。这是我的全部课程,我如何实现它 import android.os.Parcel; import android.os.Parcelable; import android.util.Pair; import java.io.Serializable; import java.util.ArrayList; public class C

我也在尝试读写这个结构化的ArrayList:
ArrayList 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
    }
}
导入android.os.packet;
导入android.os.Parcelable;
导入android.util.Pair;
导入java.io.Serializable;
导入java.util.ArrayList;
公共类檐口实现可序列化、可打包{
私有字符串编号;
私有数组列表点;
公共檐口(第n列,第p列){
数字=n;
如果(p!=null)points=newarraylist(p);
else points=new ArrayList();
}
受保护檐口(包裹内){
number=in.readString();
点=//缺少
}
公共字符串getNumber(){
返回号码;
}
公共阵列列表获取点(){
返回点;
}
公共静态最终创建者=新创建者(){
@凌驾
公共檐口(地块内){
返回新檐口(in);
}
@凌驾
公共檐口[]新阵列(整数大小){
返回新檐口[尺寸];
}
};
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地记录(编号);
//失踪
}
}
既不可打包,也不可序列化,因此您尝试执行的操作将不起作用。您必须更改用于将点保存到其他内容的数据结构。例如,您可以将其转换为如下内容:

private ArrayList<ArrayList<Float[]>> points;
私有数组列表点;
或者(如果您不想支持空值),甚至可以:

私有数组列表点;

您确定需要包裹吗?我敢肯定,Java序列化是自动工作的。我在ArrayList中使用Pair类,在只有Serializable的情况下,我得到了“Parcelable遇到IOException写入Serializable对象…”错误
private ArrayList<ArrayList<float[]>> points;