Parcelable接口的使用

来源:互联网 发布:python黑客攻防入门 编辑:程序博客网 时间:2024/06/03 21:46

1.首先创建我们的Bean:

我们还是使用一个两层的Bean的结构,在 implements Parcelable接口的时候,需要从里向外一层一层的实现,在本例中,先让Data实现Parcelable接口,复写 describeContents 和 writeToParcel 方法,之外,我们还要在Person中提供一个名为CREATOR的变量,这个可以在出现红色下划线的地方按alt+enter来自动写出。

import android.os.Parcel;
import android.os.Parcelable;


/**
 * Created by Administrator on 2017/8/21.
 */


public class Bean implements Parcelable {
    private String name;
    private Data data;


    public Bean(String name, Data data) {
        this.name = name;
        this.data = data;
    }


    protected Bean(Parcel in) {
        name = in.readString();
        data = in.readParcelable(Data.class.getClassLoader());
    }


    public static final Creator<Bean> CREATOR = new Creator<Bean>() {
        @Override
        public Bean createFromParcel(Parcel in) {
            return new Bean(in);
        }


        @Override
        public Bean[] newArray(int size) {
            return new Bean[size];
        }
    };


    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;
    }


    public Data getData() {
        return data;
    }


    public void setData(Data data) {
        this.data = data;
    }


    @Override
    public int describeContents() {
        return 0;
    }


    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeParcelable(data, flags);
    }


    public static class Data implements Parcelable{
        private String id;


        public Data(String id) {
            this.id = id;
        }


        protected Data(Parcel in) {
            id = in.readString();
        }


        public static final Creator<Data> CREATOR = new Creator<Data>() {
            @Override
            public Data createFromParcel(Parcel in) {
                return new Data(in);
            }


            @Override
            public Data[] newArray(int size) {
                return new Data[size];
            }
        };


        public String getId() {
            return id;
        }


        public void setId(String id) {
            this.id = id;
        }


        @Override
        public int describeContents() {
            return 0;
        }


2.传递的时候:

(1)赋值:Bean.Data data = new Bean.Data("999999999999");
                    Bean bean1 = new Bean("people",data);

(2)传递:Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                    intent.putExtra("bean",bean1);
                    startActivity(intent);

(3)接收:Intent intent = getIntent();
                    Bean bean = intent.getParcelableExtra("bean");

3.这样,我们的Bean对象就被传递过来了。