直接上代碼:註釋都寫的很清楚了。 public class Entry implements Parcelable{ public int userID; public String username; public boolean isMale; public Book book;//序列化對象可 ...
直接上代碼:註釋都寫的很清楚了。
public class Entry implements Parcelable{
public int userID;
public String username;
public boolean isMale;
public Book book;//序列化對象可以嵌套序列化對象,前提是2個類的對象都被序列號過
//幾乎所有情況下都返回0,可以不管
@Override
public int describeContents() {
return 0;
}
//序列化對象,將對象寫到序列號數據結構中
//flags:大多數情況為0
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(userID);
out.writeString(username);
out.writeInt(isMale ? 1:0);
out.writeParcelable(book, 0);
// out.writeList(list);也可以序列號list和Map,前提是list和Map裡面的數據都是可序列號的
// out.writeMap(Map);
}
public Entry(int userID,String username,boolean isMale) {
this.userID = userID;
this.username = username;
this.isMale = isMale;
}
//反序列化
public static final Parcelable.Creator<Entry> CREATOR = new Creator<Entry>() {
//創建指定長度的原始對象數組
@Override
public Entry[] newArray(int size) {
// TODO Auto-generated method stub
return new Entry[size];
}
//從序列號過後的對象中創建原始對象
@Override
public Entry createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Entry(source);
}
};
//從序列號後的對象中創建原始對象
private Entry(Parcel in){
userID = in.readInt();
username = in.readString();
isMale = in.readInt() == 1;
in.readParcelable(Thread.currentThread().getContextClassLoader());
}
}