实现Parcelable接口

2019独角兽企业重金招聘Python工程师标准>>> 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<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();}}

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

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

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

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

4 describeContents方法的用处
http://stackoverflow.com/questions/4778834/purpose-of-describecontents-of-parcelable-interface
主要就是用来区分子类的

父类抽象类 子类复写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;
}
}

http://stackoverflow.com/questions/4076946/parcelable-where-when-is-describecontents-used

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

5 ParcelableCONTENTS_FILE_DESCRIPTOR变量http://stackoverflow.com/questions/4076946/parcelable-where-when-is-describecontents-used

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 的PARCELABLE_WRITE_RETURN_VALUE变量用在writeToParcel (Parcel dest, int flags)方法。flags的值可以是0 or PARCELABLE_WRITE_RETURN_VALUE.

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Linux下编写C程序,怎么检查程序是否有内存泄漏?

From: http://bbs.chinaunix.net/thread-908769-1-1.html 如题。 ------------------------------- 找到了! http://www.valgrind.org/ 同时附一个转自 http://blog.chinaunix.net/u/18381/showart.php?id162015 的示例: #include <stdlib.h> void f(void) { i…

【蓝桥杯】历届试题 错误票据

历届试题 错误票据 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 每张票据有唯一的ID号。全年所有票据的ID号是连续的&#xff0c;但ID的开始数码是随机选定的。 因为工作人员疏忽&#xff0c;在…

apue源码编译

http://www.apuebook.com/ 可以下载源码src.tar.gz 修改配置文件 编辑源码解压生成的apue.2e文件夹下的Make.defines.linux 修改WKDIR/home/var/apue.2e为你的apue.2e目录&#xff0c;比如我的apue源码解压在/usr/local,那我就改为&#xff1a; WKDIR/usr/local/apue .2e 然后…

一个跨平台的 C++ 内存泄漏检测器

From&#xff1a;http://www.ibm.com/developerworks/cn/linux/l-mleak2/index.html 内存泄漏对于C/C程序员来说也可以算作是个永恒的话题了吧。在Windows下&#xff0c;MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏。在Linux下&#xff0c;相对来说就没…

PAT 1039. 到底买不买(20)

题目链接&#xff1a;https://www.patest.cn/contests/pat-b-practise/1039 解题思路&#xff1a;自己刚开始想的是用两个字符串来做&#xff0c;搜别人题解的时候发现别人一种很好的解题思路&#xff0c;是用string做的&#xff0c;感觉做的很巧妙 具体的代码如下&#xff1a;…

ios UIPickerView 技巧集锦

重新实现 UIPickerView 参考资料: http://www.cocoachina.com/bbs/read.php?tid85374 http://www.cocoachina.com/iphonedev/toolthain/2011/1205/3663.html 设置循环滚动 设置 UIPickerView 的数据源数量为很大的规模, 取数据时对行数进行取模, 从而实现循环滚动的效果. 在每…

PHP-递归扫描目录和删除目录

(1) 通过递归扫描目录并打印 // php递归扫描目录 function scanMyDir($path){// 打开目录$dh opendir($path);echo <ul>;// 循环读取目录while(($file readdir($dh)) ! false){// 先要过滤掉当前目录.和上一级目录..if($file . || $file ..) continue;// 为了能够显示…

std::map的insert和下标[]访问

From: http://www.cnblogs.com/kex1n/archive/2011/11/16/2251520.html 在map中插入元素 改变map中的条目非常简单&#xff0c;因为map类已经对[]操作符进行了重载 enumMap[1] "One"; enumMap[2] "Two"; ..... 这样非常直观&#xff0c;但存在一个性…

Delphi工具之TDUMP

TDUMP是一个命令行程序&#xff0c;它输出.exe或.dll&#xff08;以及其他文件类型&#xff09;文件的结构。 TDUMP位于Delphi安装目录下的Bin目录里&#xff0c;如下&#xff1a; 缺省时&#xff0c;TDUMP的输出显示到屏幕上&#xff1b; 用户可以将TDUMP的输出定向到一个文本…

《与mysql零距离接触》视屏学习笔记

1、数据表的增删改查操作(crud)&#xff1a; 对于表&#xff1a; 增&#xff1a;create table XXXX 删&#xff1a;drop table XXXX 改&#xff1a;alter table XXXX rename to XXXX 查&#xff1a;select * from XXXX 对于行&#xff1a; 增&#xff1a;insert into XXXX(…

[Linux C]重启设备(系统)

说白了其实很简单&#xff0c;看代码: [zcmc #17]$cat r.c#include <sys/reboot.h>int main( void ){puts("reboot now");reboot(RB_AUTOBOOT);return 0;}[zcmc #18]$makegcc -g -o r r.c [zcmc #19]$执行下"./r"&#xff0c;系统将会重启&#xff0…

网络监控如影随形

网络监控如影随形 作为网络管理人员要做好网络设备的流量监控&#xff0c;及时洞悉网络流量的变化&#xff0c;就能及时发现潜在的网络故障&#xff0c;及时定位故障部位&#xff0c;及时予以排除&#xff0c;从而做到防患于未然。可是网管人员经常会由于各种事情不再网管机旁边…

JAVA基础进阶day01

最近一段时间的自学重心是安卓底层。首先啃一下java。新年伊始&#xff0c;向着 知识的海洋急行军&#xff0c;世界人民团结万岁…. 笔记方式为代码加注释的方式: 一、最基础 public class Hello {public static void main(String args[]) {System.out.println("Hello,…

libevent的使用(socket)

From: http://blog.csdn.net/kaitiren/article/details/35253319 这篇文章介绍下libevent在socket异步编程中的应用。在一些对性能要求较高的网络应用程序中&#xff0c;为了防止程序阻塞在socket I/O操作上造成程序性能的下降&#xff0c;需要使用异步编程&#xff0c;即程序…

消费者承担消费税真的吃亏了吗?

像小老鼠一样享受&#xff0c;才不管消费税呢其实&#xff0c;我本来对经济学不感兴趣。一次偶然的机会&#xff0c;我在朋友的寝室里看到了传说中经济学最经典的教材之一——曼昆&#xff08;Mankiw&#xff09;的《经济学原理》。好奇心驱使我随手翻开了一页&#xff0c;读了…

JAVA进阶day02

老规矩&#xff0c;贴代码做注释&#xff1a; class Person {static int count;String name;int age;String getName() {return "guangdong "name;}static {System.out.println("static block"); }{System.out.println("construct block");…

cocos2dx libevent简介和使用

From: http://blog.csdn.net/kaitiren/article/details/35254577 libevent是一个基于事件触发的网络库&#xff0c;memcached底层也是使用libevent库&#xff0c;今天学习下。总体来说&#xff0c;libevent有下面一些特点和优势&#xff1a;* 统一数据源&#xff0c; 统一I/O事…

Linux查看主板的相关信息

一条命令就能知道主板的一些信息&#xff0c;具体的内容就无需解释了&#xff0c;诸如厂商啊什么的&#xff0c;英文词的借助Google吧&#xff0c;哈哈 转载于:https://blog.51cto.com/kumu1988/1086248

jenkins相关

1. jenkins maven tomcat做持续集成的时候几个关键配置&#xff1a;http://my.oschina.net/congqian/blog/112782?fromerrPmIDbLs5 2. Linux下安装Git&#xff1a;http://www.cnblogs.com/zhcncn/p/4030078.html 3. jenkins的使用教程&#xff1a;修改jenkins默认的用户&#…

Java进阶day03继承

先贴代码后分析&#xff1a; class Person {private int age;public void setAge(int age) {if (age < 0 || age > 200)age 0;else {this.age age;}}public int getAge() {return age;} public void printInfo() {System.out.println("age "age);}public…