可包裹 android

Parcelable android

package com.iconasystems.android.models;

import android.os.Parcel;
import android.os.Parcelable;

import com.parse.ParseClassName;
import com.parse.ParseObject;

import java.util.UUID;

/**
 * Created by Alex on 2/15/2016.
 */
@ParseClassName("Lock")

public class Lock extends ParseObject implements Parcelable {
    private String simNumber;
    private User owner;
    private String authToken;
    private String state;
    private String id;
    private String doorName;
    public Lock() {
    }

    public Lock(Parcel parcel){
        this.doorName = parcel.readString();
        this.authToken = parcel.readString();
        this.simNumber = parcel.readString();
        this.state = parcel.readString();
        this.id = parcel.readString();

    }

    // Some getters and setters

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(doorName);
        parcel.writeString(authToken);
        parcel.writeString(simNumber);
        parcel.writeString(state);
        parcel.writeString(id);

    }

    final Creator<Lock> CREATOR = new Creator<Lock>() {
        @Override
        public Lock createFromParcel(Parcel parcel) {
            return new Lock(parcel);
        }

        @Override
        public Lock[] newArray(int i) {
            return new Lock[i];
        }
    };


}

锁由用户拥有(有自己的模型),因此它具有用户类型的属性所有者。我的主要问题是将用户对象写入包裹。有没有办法将自定义类型写入包裹。

Is there a way of writing custom types into a parcel.

是的。您的 User class 必须实现 Parcelable 然后在您的 writeToParcel 方法中您可以使用 parcel.writeParcelable(user, i)

Parcel 也可以与 classes 一起使用 parcel.writeSerializable 实现 Serializable。这对您来说需要的工作要少得多,但是因为 Serializable 使用反射,它会带来性能损失。