android - 使用Parcelable序列化
1.新的序列化方式:
android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。
除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。
Parcelable实现要点:需要实现三个东西
1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:
writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc
2)describeContents方法。没搞懂有什么用,反正直接返回0也可以
3)静态的Parcelable.Creator接口,本接口有两个方法:
createFromParcel(Parcel in) 实现从in中创建出类的实例的功能
newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。
示例:
需求:我们经常需要在多个部件(activity或service)之间通过Intent传递一些数据,简单类型(如数字、字符串)的可以直接放入Intent。复杂类型(例如,J2ee中的Bean)的必须实现Parcelable接口。示例如下:
package cn.wizhy;import android.os.Parcel; import android.os.Parcelable;public class Phone implements Parcelable{String type;String company;int price;public Phone(String t,String c,int p) {type=t;company=c;price=p;}public Phone() {// TODO Auto-generated constructor stub }public String getType() {return type;}public void setType(String type) {this.type = type;}public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public static final Parcelable.Creator<Phone> CREATOR = new Creator<Phone>(){@Overridepublic Phone createFromParcel(Parcel source) {// TODO Auto-generated method stubPhone cus = new Phone(); cus.type = source.readString(); cus.company = source.readString(); cus.price = source.readInt(); return cus; }@Overridepublic Phone[] newArray(int size) {// TODO Auto-generated method stubreturn new Phone[size];} };@Overridepublic int describeContents() {// TODO Auto-generated method stubreturn 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {// TODO Auto-generated method stub dest.writeString(type);dest.writeString(company);dest.writeInt(price);} }
第一个Activity,构造类将其存放到Arraylist里,并通过Intent传给第二个Activity
package cn.wizhy;import java.util.ArrayList;import android.app.Activity; import android.content.Intent; import android.os.Bundle;public class Demo extends Activity {ArrayList<Phone> info = new ArrayList<Phone>();public Phone phone;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);insertPhone();Intent intent = new Intent(this,Demo2.class); // Bundle bundle = new Bundle(); // bundle.putSerializable("phone", phone);// intent.putExtras(bundle);phone = new Phone("goole","G1",6000);info.add(phone);phone = new Phone("apple", "iphone3G", 5000);info.add(phone);intent.putExtra("phones", info);startActivity(intent);}public void insertPhone(){phone= new Phone("apple", "iphone3G", 5000);}}
第二个Activity接受数据:
package cn.wizhy;import java.util.ArrayList;import android.app.Activity; import android.content.Intent; import android.os.Bundle;public class Demo2 extends Activity {ArrayList<Phone> info = new ArrayList<Phone>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();info =intent.getParcelableArrayListExtra("phones");for(int i=0;i<info.size();i++){System.out.println("type="+info.get(i).type+" company="+info.get(i).company+" price"+info.get(i).price);}} }
from:http://aijiawang-126-com.iteye.com/blog/643762
转载于:https://www.cnblogs.com/bill-joy/archive/2012/04/25/2470248.html
android - 使用Parcelable序列化相关推荐
- Android实现Parcelable对象序列化的实例
bundle.putParcelable可以实现传递对象,但是这个对象的类必须实现Parcelable接口才能够使用. 下面是一个简单的在Activity之间传递对象的例子. parcel实现参数的序 ...
- android parcelable 对象,Android实现Parcelable对象序列化的实例
Android实现Parcelable对象序列化的实例 bundle.putParcelable可以实现传递对象,但是这个对象的类必须实现Parcelable接口才能够使用. 下面是一个简单的在Act ...
- Android中的Serializable和Parcelable序列化
Serializable和Parcelable接口都可以完成对象的序列化过程,在Android中当我们需要通过Intent和Binder传输数据时,我们要传输的对象就需要使用Serializable和 ...
- Android中Parcelable接口用法
-- 通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象.也可以将Parcel看成是一个流,通过writeToPa ...
- Android中Parcelable的原理和使用方法
Parcelable的简单介绍 介绍Parcelable不得不先提一下Serializable接口,Serializable是Java为我们提供的一个标准化的序列化接口,那什么是序列化呢? 进行And ...
- Android 的Parcelable接口
此文转载自http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html 1. Parcelable接口 Interface ...
- android中接口的作用是什么意思,Android为什么要序列化
android为什么要序列化?什么是序列化,怎么进行序列化 why 为什么要了解序列化?-- 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这 ...
- Android中Parcelable与Serializable接口用法
转自: Android中Parcelable接口用法 1. Parcelable接口 Interface for classes whose instances can be written to a ...
- android studio parcelable,Android中Parcelable的使用详解
Parcelable与Serializable Serializable是Java为我们提供的一个标准化的序列化接口. Parcelable是Android为我们提供的序列化的接口. 对比: 1.Pa ...
最新文章
- 服不服?40行Python代码,实现卷积特征可视化
- 职称计算机和职称英语期限,专业技术职称考试,职称英语和职称计算机有效期多长时间,每年什么时候报名啊?上海的...
- Eclipse启动之四 : Eclipse核心框架启动(百度空间迁移)
- 上下位机通讯协议_上位机与下位机的区别通讯
- 2017 数据驱动大会豪华议程出炉,早鸟票一周内全部售罄
- c语言实验答案周信东第三章,桂林电子科技大学C语言程序设计习题答案周信东实验顺序结构与逻辑运算.pdf...
- 题目 1886: [蓝桥杯][2017年第八届真题]包子凑数(欧几里得+完全背包)
- flash 火狐总是崩溃_win10系统火狐flash插件总是崩溃的解决方法
- “智慧感控”理念革新医疗管理
- mysql password() pam-mysql兼容性_pam_mysql认证ftp虚拟用户账号,且拥有不同的权限
- android 微信支付 2,Android微信支付获取二次签名Sign的方法
- 10.Hello World 的 Java 项目创建和项目配置文件讲解
- cecore.cls.php 08cms,08cms小说系统 v1.0PHP CMS源码下载-华软网
- win10安装visio2010出错_win10系统安装Office2010提示错误1935的解决方案
- edp和edt哪个好_香水edt和edp是什么意思
- 解决微信emjoy特殊符号插入数据库出错
- 小红书如何营销?各大品牌小红书运营投放营销策划方案合集(13份)
- 10余智慧项目建设初见成效 南岸用智慧城市开启智慧生活
- Bootstrap导航和导航条
- Linux设备驱动程序
热门文章
- 改良程序需要的11个技巧
- extract($_POST[])
- asp.net中, 如何在后台获取访问这个页面的用户的名字?
- jmeter 使用命令行执行
- ELK 使用小技巧(第 5 期)
- javaEE(3)_servlet基础
- 转载:Python正则表达式
- androidpn的学习研究(二)androidpn-server服务端启动过程的理解分析
- Launcher启动的流程图【AndroidICS4.0——Launcher系列四】
- XXX管理平台系统——项目总结(over)