Intent传递值对象的两种方式:Serializable和Parcelable
2016-12-22 18:53
357 查看
首先什么是值对象:自定义的,有数据类型的对象!
用Intent传递我们自定义的数据类型对象时,只能有两种方式,第一种就是Serializable,这种是Java语音内置的用于序列化数据类型的一个接口!这种方式很方便,直接放自定义的数据类继承它就可以了!
第二中是Parcelable,这种是Andorid平台自己的序列化数据的一个接口!这种方式的使用就相对复杂一点,首先继承这个接口,这时候要复习两个方法,分别是:
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
第一个方法,我们默认不动就可以了,在第二个方法中要将我们数据类型的元素放进,类如:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeBundle(new Bundle());
dest.writeString(getUnit());
dest.writeInt(getIndex());
}
做完这些之后,还要重写一个方法:T 代表你自己定位的数据类
public static final Creator CREATOR = new Creator() {
@Override
public UnitData createFromParcel(Parcel in) {
return new UnitData(in.readString(), in.readInt());
}
@Override
public UnitData[] newArray(int size) {
return new UnitData[size];
}
};
如果你用的是AS的话,会智能的提示你添加次方法,如果是eclipse的话好像只能自己动手写了,也挺麻烦的!
这两个方法第二个直接返回size就可以了,第一个方法需要返回你的数据类型,按照上面的写法就可以了!
下面是全部的代码:
public class UnitData implements Parcelable {
private String unit;
private int index;
public UnitData(String unit, int index) {
this.unit = unit;
this.index = index;
}
public static final Creator CREATOR = new Creator() {
@Override
public UnitData createFromParcel(Parcel in) {
return new UnitData(in.readString(), in.readInt());
}
@Override
public UnitData[] newArray(int size) {
return new UnitData[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(getUnit());
dest.writeInt(getIndex());
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
用Intent传递我们自定义的数据类型对象时,只能有两种方式,第一种就是Serializable,这种是Java语音内置的用于序列化数据类型的一个接口!这种方式很方便,直接放自定义的数据类继承它就可以了!
第二中是Parcelable,这种是Andorid平台自己的序列化数据的一个接口!这种方式的使用就相对复杂一点,首先继承这个接口,这时候要复习两个方法,分别是:
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
第一个方法,我们默认不动就可以了,在第二个方法中要将我们数据类型的元素放进,类如:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeBundle(new Bundle());
dest.writeString(getUnit());
dest.writeInt(getIndex());
}
做完这些之后,还要重写一个方法:T 代表你自己定位的数据类
public static final Creator CREATOR = new Creator() {
@Override
public UnitData createFromParcel(Parcel in) {
return new UnitData(in.readString(), in.readInt());
}
@Override
public UnitData[] newArray(int size) {
return new UnitData[size];
}
};
如果你用的是AS的话,会智能的提示你添加次方法,如果是eclipse的话好像只能自己动手写了,也挺麻烦的!
这两个方法第二个直接返回size就可以了,第一个方法需要返回你的数据类型,按照上面的写法就可以了!
下面是全部的代码:
public class UnitData implements Parcelable {
private String unit;
private int index;
public UnitData(String unit, int index) {
this.unit = unit;
this.index = index;
}
public static final Creator CREATOR = new Creator() {
@Override
public UnitData createFromParcel(Parcel in) {
return new UnitData(in.readString(), in.readInt());
}
@Override
public UnitData[] newArray(int size) {
return new UnitData[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(getUnit());
dest.writeInt(getIndex());
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
相关文章推荐
- Intent传递对象(两种序列化方式Serializable/Parcelable)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Intent 传递基本类型的数据的两种方式(不是Serializable,Parcelable)
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Intent传递对象的两种方法(Serializable,Parcelable)
- [转]Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android中Intent传递对象的两种方法(Bundle.putParcelable/putSerializable)!
- Android高手进阶教程(十六)---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android中Intent传递对象的两种方法(Serializable,Parcelable)