Parcelable接口使用

    xiaoxiao2021-12-14  16

    详细参考1 详细参考2

    1 该类需要实现Parcelable接口. (有插件Parcelable实现很方便) 2 类有一个静态成员变量CREATOR. 3 这个CREATOR的类须实现Parcelable.CREATOR接口. public interface Parcelable { //内容描述接口,基本不用管 public int describeContents(); //写入接口函数,打包 public void writeToParcel(Parcel dest, int flags); //读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入 //为了能够实现模板参数的传入,这里定义Creator嵌入接口,内含两个接口函数分别返回单个和多个继承类实例 public interface Creator<T> { public T createFromParcel(Parcel source); public T[] newArray(int size); } } 1)implements Parcelable 2)重写writeToParcel方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从 Parcel容器获取数据 3)重写describeContents方法,内容接口描述,默认返回0就可以 return 0 4)实例化静态内部对象CREATOR实现接口Parcelable.Creator 实现2个方法 createFromParcel()返回单个实例 newArray()返回多个 return T[size]即可 class Person implements Parcelable { private String name; private int id; public Person() { } protected Person(Parcel in) { name = in.readString(); id = in.readInt(); } public static final Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel in) { return new Person(in); } @Override public Person[] newArray(int size) { return new Person[size]; } }; public void setName(String name) { this.name = name; } public void setId(int id) { this.id = id; } public String getName() { return name; } public int getId() { return id; } @Override public int describeContents() { return 0; } @Override public String toString() { return "name:" + getName() + " id:" + getId(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(id); }
    转载请注明原文地址: https://ju.6miu.com/read-965240.html

    最新回复(0)