您的位置:首页 > 其它

关于在Intent中传递对象的两种方法之一Parcelable

2013-07-19 14:46 375 查看
先看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());


以上做法,个人试了可行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐