博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现Parcelable接口
阅读量:6250 次
发布时间:2019-06-22

本文共 2270 字,大约阅读时间需要 7 分钟。

hot3.png

1 官方例子

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
CREATOR = new Parcelable.Creator
() { 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(); } }

实现
Parcelable 的两个方法,同时还要实现静态变量CREATOR。
其他入门例子:

2 Parcel里面有带classloader的方法可以直接填null,会使用默认的classloader,但是用null会报异常,原因有待查。

3 Parcel的writeValue方法可以写入Object类型的数据。

4 describeContents方法的用处
主要就是用来区分子类的

父类抽象类 子类复写describeContents方法

public XiangleTree createFromParcel(Parcel source) {int description = source.readInt();switch (description) {case CATEGORY:Category category = new Category();category.setId(source.readString());category.setLevel(source.readString());category.setName(source.readString());category.setParentId(source.readString());category.setHasCoupon(source.readString());return category;case CIRCLE:Circle circle = new Circle();circle.setId(source.readString());circle.setLevel(source.readString());circle.setName(source.readString());circle.setParentId(source.readString());circle.setHasCoupon(source.readString());return circle;default:return null;}}

回答者还笑称Parcelable 接口是个C++的程序员设计的,结果发现JAVA中没有多重继承。

5 ParcelableCONTENTS_FILE_DESCRIPTOR变量

If you need to put
FileDescriptor
object into Parceable you should/must specify CONTENTS_FILE_DESCRIPTOR as return value of describeContents(),

i.e. by "special object" (indescribeContents()'s description) they really mean: FileDescriptor.

6 Parcelable 的变量用在writeToParcel ( dest, int flags)方法。flags的值可以是0 or .

dest是某个方法的返回值such as "Parcelable someFunction()", "void someFunction(out Parcelable)", or "void someFunction(inout Parcelable)"

7 处理list:writeToParcel方法dest.writeTypedList(xxList) createFromParcel方法:source.readTypedList(xxList,XX.CREATOR),或者参考《树形对象实现parcelable接口》

8 树形对象实现Parcelable 见笔记 《树形对象实现parcelable接口》

转载于:https://my.oschina.net/dingbuoyi/blog/61903

你可能感兴趣的文章
计算机网络与Internet应用
查看>>
Mars说光场(3)— 光场采集
查看>>
Django 文件下载功能
查看>>
xBIM 插入复制功能
查看>>
AI技术出海 - 阿里云GPU服务器助力旷视勇夺4项世界第一
查看>>
Spring Boot中初始化资源的几种方式
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
HTML DOM 之 DOM对象:Document Object Model (文档对象模型)
查看>>
centos 6.5安装vncserver 并开启远程桌面
查看>>
在RHEL上配置epel的yum源及其他开源YUM源
查看>>
mysql密码过期
查看>>
容器日志采集利器Log-Pilot
查看>>
我的友情链接
查看>>
Github使用教程(一)--搭建Github环境
查看>>
Iperf使用方法与参数说明
查看>>
qt 学习之路2
查看>>
docker学习记录(二)--安装docker并配置镜像源
查看>>
python构造二维列表以及排序字典
查看>>
我的友情链接
查看>>
CentOs 7 搭建DHCP服务器 启动报错
查看>>