zoukankan      html  css  js  c++  java
  • 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);
    		}
    	};
     }
    


    源码下载

  • 相关阅读:
    配置secondarynamenode主机名masters
    配置secondarynamenode主机名masters
    Redis 数据备份与恢复
    Redis 数据备份与恢复
    以太坊:Go、Java、Python、Ruby、JS客户端介绍
    以太坊:创建安全多签名钱包及高级设置
    以太坊:导入预售钱包,更新、备份、恢复账号
    以太坊客户端的选择与安装
    以太坊:C++客户端的安装与定制(一)
    2019最受欢迎数据库:MySQL居首PostgreSQL第二Oracle位列第八
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6840269.html
Copyright © 2011-2022 走看看