Parcelable接口之初解

通过在网上查找资料,结合自己的理解,Parcelable接口其实主要就是用来封装数据。对于整形Int、short、long、char、string、float、double等类型的数据,在附加到Intent上时,Android都提供相应的PutExtra及对应的get…Extra来实现。但是如果Intent传递的是一个对象类型的数据,如一个class,则无法在Intent中找到对应的加载方式。所以这时候就需要通过一种数据封装方式,则Parcelable接口就应运而生了。

先不管如何封装,封装成Parcel 类型的数据后,Intent就能通过putExtra(String,Parcelable[])来实现Intent信息赋值,通过getParcelableExtra获得Intent中封装的Parcelable数据。

Parcelable数据的封装可查阅上篇日志,总共有三个不走:(1)对需进行封装的数据设置Parcelable接口;(2)通过writeToParcel进行封装; (3)createFromParcel读取Parcel数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Parcelable接口,需要以下几个步骤: 1. 在数据类型所在的包下,创建一个实现了Parcelable接口的类,例如: ``` public class MyData implements Parcelable { private int id; private String name; // 构造方法、getter和setter等... // 实现Parcelable接口的方法 @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeString(name); } public static final Parcelable.Creator<MyData> CREATOR = new Parcelable.Creator<MyData>() { @Override public MyData createFromParcel(Parcel source) { return new MyData(source); } @Override public MyData[] newArray(int size) { return new MyData[size]; } }; private MyData(Parcel in) { id = in.readInt(); name = in.readString(); } } ``` 在这个例子中,我们定义了一个MyData类,它有两个属性:id和name。这个类实现了Parcelable接口,并实现了describeContents()和writeToParcel()方法。 2. 在writeToParcel()方法中,我们需要将MyData对象的属性写入到Parcel中。这里我们使用了Parcel的writeInt()和writeString()方法,将id和name写入Parcel中。 3. 在CREATOR实例变量中,我们定义了一个Parcelable.Creator对象,它有两个方法:createFromParcel()和newArray()。createFromParcel()方法用于从Parcel中读取MyData对象,newArray()方法用于创建一个MyData数组。 4. 在MyData的构造方法中,我们从Parcel中读取id和name属性。 完成以上步骤后,MyData类就实现了Parcelable接口,可以作为Intent的数据类型使用。在Intent中传递MyData对象时,可以使用putExtra()方法或putParcelableArrayListExtra()方法。在接收Intent的Activity中,可以使用getParcelableExtra()方法或getParcelableArrayListExtra()方法获取MyData对象或MyData对象的ArrayList。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值