Невозможно прочитать и записать список двойников в parcelable - PullRequest
0 голосов
/ 22 мая 2018

У меня есть класс, имеющий список двойников.Мой класс реализует parcelable.Я не понимаю, как читать и писать в двойном формате как пригодный для посылки.

Ниже приводится мой класс

public class CinemasModel implements Parcelable{

@SerializedName("ll")
private ArrayList<Double> mLl;

@SerializedName("films")
private List<FilmsModel> mFilms;

protected CinemasModel(Parcel in) {
    mLl = new ArrayList<>();
    in.readValue(this.getClass().getClassLoader());
    mFilms = new ArrayList<FilmsModel>();
    in.readList(this.mFilms, null);
}

public static final Creator<CinemasModel> CREATOR = new Creator<CinemasModel>() {
    @Override
    public CinemasModel createFromParcel(Parcel in) {
        return new CinemasModel(in);
    }

    @Override
    public CinemasModel[] newArray(int size) {
        return new CinemasModel[size];
    }
};

public CinemasModel(ArrayList<Double> ll, List<FilmsModel> films){
    this.mLl = ll;
    this.mFilms = films;
}

public CinemasModel(){

}

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

@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeValue(mLl);
    parcel.writeList(mFilms);
}
}

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 22 мая 2018

Ниже работает код, сгенерированный вышеприведенным плагином.

public class CinemasModel implements Parcelable {

    @SerializedName("ll")
    private ArrayList<Double> mLl;

    @SerializedName("films")
    private List<FilmsModel> mFilms;

    protected CinemasModel(Parcel in) {
        this.mLl = new ArrayList<Double>();
        in.readList(this.mLl, Double.class.getClassLoader());
        this.mFilms = new ArrayList<FilmsModel>();
        in.readList(this.mFilms, FilmsModel.class.getClassLoader());
    }

    public static final Parcelable.Creator<CinemasModel> CREATOR = new Parcelable.Creator<CinemasModel>() {
        @Override
        public CinemasModel createFromParcel(Parcel source) {
            return new CinemasModel(source);
        }

        @Override
        public CinemasModel[] newArray(int size) {
            return new CinemasModel[size];
        }
    };
}
...