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


    源码下载

  • 相关阅读:
    linux面试常问命令
    图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
    总结一些牛客网上 的算法岗面试题
    Pytorch-Tensor基本操作
    C++使用代码创建一个Windows桌面应用程序
    Windows中的消息与消息队列
    解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
    Mybatis的一级缓存
    面试题:zookeeper实现分布式锁
    sublime text 文件默认打开格式
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6840269.html
Copyright © 2011-2022 走看看