先看android development给的示例:
public class MyParcelable implements Parcelable { private int mData; public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { out.writeInt(mData); } public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() { public MyParcelable createFromParcel(Parcel in) { return new MyParcelable(in); } public MyParcelable[] newArray(int size) { return new MyParcelable[size]; } }; private MyParcelable(Parcel in) { mData = in.readInt(); } }这几个方法是必须实现的,该示例中仅有一个类型,即int;
对于复杂的类型怎么处理呢?
如果是boolean类型:可以写成这样:
在writeToParcel方法中这样写:
dest.writeString(Boolean.toString(favorited));
在privateMyParcelable(Parcelin)方法中这样写:
favorited = Boolean.parseBoolean(in.readString());
而Arraylist类型则这样:而且Pic_Url这个类也必须继承Parcelable;
pic_Urls = in.readArrayList(Pic_Url.class.getClassLoader());
dest.writeList(pic_Urls);
Date类型可以这么做:
dest.writeLong(created_at.getTime());
created_at = new Date(in.readLong());
对象User可以这么做:而且User这个类也必须继承Parcelable;
user = in.readParcelable(User.class.getClassLoader());
dest.writeParcelable(user, flags);
List<String>类型可以这么做:
dest.writeStringList(pic_Urls);
pic_Urls= in.readArrayList(String.class.getClassLoader());
以上做法,个人试了可行