我们在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);
}
};
}

源码下载

最新文章

  1. Angular从0到1:function(上)
  2. KMP模式匹配_2
  3. android122 zhihuibeijing 主页面使用fragment搭建
  4. Linux Apache SVN
  5. C语言的预处理命令
  6. Android开发环境的搭建之(一)Java开发环境的安装
  7. 使用wfastcgi在IIS上部署Python Flask应用
  8. Vue之八 HTML5 History模式
  9. Redis可视化工具 Redis Desktop Manager
  10. JAVA—枚举(Enum)学习总结
  11. java数组的for遍历
  12. Python urllib.quote
  13. 微信小程序中的 web-view 组件
  14. windows下对python的pip更新到最新版本
  15. Linux下tomcat启动
  16. redis——持久化方式RDB与AOF分析
  17. discuz对PHP7不支持mysql的兼容性处理
  18. mysql 命令连接
  19. 因技术垃圾直接上手groovy的工作感悟
  20. Mail.Ru Cup 2018 Round 2 Problem C Lucky Days

热门文章

  1. C#中何时使用dynamic
  2. 6,id 小数据池,编码and解码。
  3. HDU-4825 Xor Sum,字典树好题!
  4. 九度oj 题目1125:大整数的因子
  5. 九度oj 题目1137:浮点数加法
  6. iOS大转盘抽奖
  7. AFNetWorking出现code=-1016错误解决办法
  8. CocoaAsyncSocket一个第三方Socket库
  9. Python2.6.6升级2.7.3
  10. bzoj1065【Noi2008】奥运物流