Android Parcelable

来源:互联网 发布:ubuntu samba权限设置 编辑:程序博客网 时间:2024/06/05 02:21

在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;    }}
0 0
原创粉丝点击