类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);
}
};
}