Intent传递简单对象与集合
我们在Intent传递传递对象。能够有三种方式,实现Serializable接口、实现Parcelable接口,使用json格式序列化与反序列化。
在此我们使用第二方式,现实Parcelable接口,实现Parcelable须要下面操作。
1.writeToParcel 方法:该方法将类的数据写入外部提供的Parcel中。
2.describeContents 方法:返回内容描写叙述信息的资源ID。
3.静态的Parcelable.Creator接口,本接口有下面方法双方法:
3.1 createFormParcel(Parcel in):实现从parcle实例中创建出类的实例的功能。
3.2 newArray(int size): 创建一个类型为T。长度为size的数组。
样例1:User 对象创建
public class User implements Parcelable{ private Integer userId;
private String userName;
@Override
public int describeContents() {
return 0;
} /**
* 注意:序列化与反序列化顺序必需要一样
* @param parcel
*/
public User(Parcel source){
this.userId =source.readInt();
this.userName = source.readString();
} public User(Integer userId, String userName) {
super();
this.userId = userId;
this.userName = userName;
} /**
* 序列化
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.userId);
dest.writeString(this.userName);
} public static Parcelable.Creator<User> CREATOR=new Parcelable.Creator<User>() { /**
* 反序列化
*/
@Override
public User createFromParcel(Parcel source) {
return new User(source);
} @Override
public User[] newArray(int size) {
return new User[size];
} };
样例2:UserMode
ublic class UserMode implements Parcelable{ private List<User> users=new ArrayList<User>(); public UserMode(){}; @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(users);
} public UserMode(Parcel source){
//须要创建一个集合,进行反序列化
users = new ArrayList<User>();
source.readList(users, getClass().getClassLoader());
} public static Parcelable.Creator<UserMode> CREATOR =new Creator<UserMode>() { @Override
public UserMode[] newArray(int size) {
return new UserMode[size];
} @Override
public UserMode createFromParcel(Parcel source) {
return new UserMode(source);
}
};
}
Intent传递简单对象与集合的更多相关文章
- Intent传递list<bean>集合
首先你定义的bean需要继承Serializable接口 //传递list<bean>集合Intent intent = new Intent(ViolationOfTheQueryAct ...
- [Android] Android 最全 Intent 传递数据姿势
我们都是用过 Intent,用它来在组件之间传递数据,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的 ...
- Intent传递list集合时异常解决
以前只是用intent传递一些简单的值,最近传递list集合时发现值总是传不过去,logcat报如下错误 说的是不能处理值为null的情况,回过头看list集合时确实发现有value为null的key ...
- 【转】Android 之最新最全的Intent传递数据方法
原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...
- Intent传递数据全解
概述 之前的博文也有介绍,查看-->用户界面开发基础 这里单独抽取出来,更加具体的记录一下,事实上主要是API的使用. Intent传递简单数据 能够以直接通过调用Intent的putExtra ...
- Android 通过 Intent 传递类对象或list对象
(转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...
- Android 全局获取 Context 与使用 Intent 传递对象
=====================全局获取 Context======================== Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活 ...
- Intent传递对象——Serializable和Parcelable区别
为什么要将对象序列化? 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.用过序列化对象在网络中传递对象: 3.通过序列化对象在进程间传递对象. 1.实现Serializable接口 Seri ...
- Activity之间使用intent传递大量数据带来问题总结
转载:大飞 http://blog.csdn.net/rflyee/article/details/47441405 Activity之间使用Parcel传递大量数据产生的问题. Activity ...
随机推荐
- Linux基础学习-使用PXE+Kickstart无人值守安装服务
无人值守安装系统 PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技 ...
- centos7中将python2.7.5版本升级到3.x版本
一.安装gcc源码编译器 yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel 二.下载python软件包 wget https ...
- webpack-dev-server proxy代理
一个最简单的代理例子:index.html中有如下代码 fetch('/api/pub/article/list?pageSize=2').then((data)=>{ return data. ...
- verilog behavioral modeling --procedural assignments
1.procedural assignments are used for updating reg ,integer , time ,real,realtime and memory data ty ...
- 【php】【运算符】位移运算符
位运算符 &,|,!,^,<<,>> ···<<···左移一位值乘以2 ···>>···右移一位值除以2 超过总位数都会变为0 正负值移位运算符 ...
- shell-code-4-运算符
#1. shell 基本运算符有:算数.关系.布尔.字符串.文件测试运算符#2. 原生bash不支持简单的数学运算,可使用awk和expr(最常用)echo `expr 1 + 2`# 反引号:表达式 ...
- Cocos2d-x学习资料集锦
Cocos2d-x学习资料集锦: 1.Cocos2d-x官方中文文档:https://github.com/chukong/cocos-docs/blob/master/catalog/zh.md 推 ...
- Impala的分布式查询
翻译自<Getting Started with Impala> 分布式查询 分布式查询是impala的核心.曾几何时,你需要研究并行计算,才能开始进行深奥而晦涩的操作.现在,有运行在Ha ...
- java 协程框架quasar gradle配置
https://github.com/puniverse/quasar-gradle-template/blob/master/gradle/agent.gradle 1.将其中的"-jav ...
- web.xml不同的头文件
<转自:http://blog.csdn.net/qq_16313365/article/details/53783288> 1. Servlet 3.1 Java EE 7 XML sc ...