• 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);
    		}
    	};
     }
    


    源码下载

  • 相关阅读:
    pip install如何指定包的安装路径
    Docker搭建本地私有仓库
    mysql主从复制docker
    Docker安装
    Docker镜像发布到阿里云
    3主3从redis集群扩缩容配置案例
    阿里云镜像加速器配置
    div高度自适应的方法 何苦
    nosql之间的对比 何苦
    php程序获取客户端MAC地址 何苦
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6840269.html
Copyright © 2020-2023  润新知