可分辨的android

时间:2016-02-24 14:47:29

标签: android parcelable

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];
        }
    };


}

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

1 个答案:

答案 0 :(得分:1)

  

有没有办法将自定义类型写入包裹。

是。您的User课程必须实施Parcelable,然后在writeToParcel方法中使用parcel.writeParcelable(user, i)

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