Android使用Parcelable注意事项

类Book.java,实现Parcelable接口,实现该接口有点复杂,具体注意事项如下:

(1)定义静态常量Parcelable.Creator<Book> CREATOR;

(2)属性字段的读写顺序保持一致;

(3)如果有写入字段并不在写入顺序的末尾,则必须读取,否则,其后的所有字段在读取时都会出错。因此,若某个字段不读取,则不要将其写入或将其放在写入顺序的末尾。建议:为了安全起见,写入的字段都读取,若不读取,该字段就没有存在的意义。

import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;

public class Book implements Parcelable{

    public int id;

    public int ISBN;

    public String des;

    public Bitmap bitmap;

    public Book(){}

    //读取顺序: id--->bitmap--->des--->ISBN
    //且如果有写入字段并不在顺序的末尾,则必须读取,否则,其后的所有字段在读取时都会出错.
    public Book(Parcel parcel) {
        // TODO Auto-generated constructor stub
        id = parcel.readInt();
        bitmap = parcel.readParcelable(Bitmap.class.getClassLoader());    //Bitmap的读取
        des = parcel.readString();
        ISBN = parcel.readInt();
    }

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    //写入顺序:id--->bitmap--->des--->ISBN
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        // TODO Auto-generated method stub
        parcel.writeInt(id);
        parcel.writeParcelable(bitmap, flags);        //Bitmap的写入
        parcel.writeString(des);
        parcel.writeInt(ISBN);
    }

    public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {

        @Override
        public Book[] newArray(int sizes) {
            // TODO Auto-generated method stub
            return new Book[sizes];
        }

        @Override
        public Book createFromParcel(Parcel parcel) {
            // TODO Auto-generated method stub
            return new Book(parcel);
        }
    };
}

备注:Android 快速实现Parcelable接口

猜你喜欢

转载自blog.csdn.net/zhifanxu/article/details/130243604