Android笔记之Intent传递自定义对象

1、

import java.util.List;
import android.os.Parcel;
import android.os.Parcelable;

/**
 * 1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中。
 * 2)describeContents方法。直接返回0就可以。
 * 3)静态的Parcelable.Creator<T>接口,本接口有两个方法:
 * createFromParcel(Parcel in) 实现从in中创建出类的实例的功能。
 * newArray(int size) 创建一个类型为T,长度为size的数组, returnnew T[size];即可。本方法是供外部类反序列化本类数组使用。
 * 
 * @author JL
 */
public class ViewPoint implements Parcelable {
    
    private String v_name;
    
    private List<String> v_picture;
        
    private List<String> v_description;

    /**
     * 这一步read的顺序要和writeToParcel的顺序保持一致
     * @param parcel
     */
    private ViewPoint(Parcel parcel) {
        // TODO Auto-generated constructor stub
        v_name=parcel.readString();
        v_description=parcel.readArrayList(List.class.getClassLoader());
        v_picture=parcel.readArrayList(List.class.getClassLoader());
        //List<String> :parcel.readArrayList(List.class.getClassLoader())
        //Map<String, String> :parcel.readHashMap(Map.class.getClassLoader())
        //List<School> :parcel.readArrayList(School.class.getClassLoader())
        //School :(School) parcel.readParcelable(School.class.getClassLoader())
    }
    public ViewPoint() {
        // TODO Auto-generated constructor stub
    }
    public static final Parcelable.Creator<ViewPoint> CREATOR=new Parcelable.Creator<ViewPoint>() {

        @Override
        public ViewPoint createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
            return new ViewPoint(source);
        }

        @Override
        public ViewPoint[] newArray(int size) {
            // TODO Auto-generated method stub
            return new ViewPoint[size];
        }
    };

    
    public String getV_name() {
        return v_name;
    }
    public void setV_name(String v_name) {
        this.v_name = v_name;
    }
    public List<String> getV_picture() {
        return v_picture;
    }
    public void setV_picture(List<String> v_picture) {
        this.v_picture = v_picture;
    }
    public List<String> getV_description() {
        return v_description;
    }
    public void setV_description(List<String> v_description) {
        this.v_description = v_description;
    }
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub
        //向Parcel对象写入要序列化的数据
        //List一律写成 :writeList
        //School :writeParcelable(schoolInfo, arg1),且School本身是Parcelable对象
        dest.writeString(v_name);
        dest.writeList(v_description);
        dest.writeList(v_picture);
    }
}

 

Done

Android笔记之Intent传递自定义对象,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。