在Activity传递对象等很多需要序列化的地方可以使用parcelable
,效率比serializable
要高。
链接:http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html
个人实例: Activity间传递对象
包含:Int, String, 对象列表等
EnglishReading
中存在EnglishReadingItem
链表,因此EnglishReadingItem
也需要实现Parcelable
EnglishReading
public class EnglishReading implements Parcelable {
public int id; // 题目的ID号
public String document_txt; // 题干
public boolean isComplete;
public ArrayList<EnglishReadingItem> body_all; //子题目类
protected EnglishReading(Parcel in) {
//int
id = in.readInt();
//String
document_txt = in.readString();
//boolean
isComplete = (in.readInt() == 0 ? false : true);
//读取链表
//body_all = in.createTypedArrayList(EnglishReadingItem.CREATOR);//另一个方法
body_all = new ArrayList<EnglishReadingItem>();
in.readList(body_all, EnglishReadingItem.class.getClassLoader());
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.id);
dest.writeString(this.document_txt);
//写入布尔值方法
dest.writeInt(isComplete? 1 : 0);
dest.writeList(body_all);
}
//如下系统自动补全
public static final Creator<EnglishReading> CREATOR = new Creator<EnglishReading>() {
@Override
public EnglishReading createFromParcel(Parcel in) {
return new EnglishReading(in);
}
@Override
public EnglishReading[] newArray(int size) {
return new EnglishReading[size];
}
};
@Override
public int describeContents() {
return 0;
}
}
EnglishReadingItem
public class EnglishReadingItem implements Parcelable{
public ArrayList<String> body; //String数组
protected EnglishReadingItem(Parcel in) {
body = in.createStringArrayList(); //读取String链表
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringList(body); //写入String链表
}
//系统自动补全
public static final Creator<EnglishReadingItem> CREATOR = new Creator<EnglishReadingItem>() {
@Override
public EnglishReadingItem createFromParcel(Parcel in) {
return new EnglishReadingItem(in);
}
@Override
public EnglishReadingItem[] newArray(int size) {
return new EnglishReadingItem[size];
}
};
@Override
public int describeContents() {
return 0;
}
}