Android中传递对象数据的方式有两种:Serializable和Parcelable。
Serializable方式:通过将对象进行序列化来进行传输。
Parcelable方式:通过将对象进行分解,而分解后的每一部分都是Intent所支持的数据类型,从而达到传输的目的。
备注:传输效率上来说,Parcelable方式优于Serializable方式。
具体步骤如下所示:
(一)Serializable方式
/** * Serializable方式 */ public class Tb_UserS implements Serializable { private int id; private String name; private int age; public Tb_UserS() { super(); } public Tb_UserS(String name, int age) { this.name = name; this.age = age; } public int getId() { return id; } public int getAge() { return age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } }
Intent intent = new Intent(mContext, CardViewActivity.class);
intent.putExtra("userData", tb_userS);
Tb_UserS tb_userS = (Tb_UserS) getIntent().getSerializableExtra("userData");
(二)Parcelable方式
/**
* Parcelable方式
*/
public class Tb_UserP implements Parcelable {
private int id;
private String name;
private int age;
public Tb_UserP() {
super();
}
public Tb_UserP(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
dest.writeInt(age);
}
public static final Parcelable.Creator<Tb_UserP> CREATOR = new Creator<Tb_UserP>() {
@Override
public Tb_UserP createFromParcel(Parcel source) {
Tb_UserP tb_userP = new Tb_UserP();
tb_userP.id = source.readInt();
tb_userP.name = source.readString();
tb_userP.age = source.readInt();
return tb_userP;
}
@Override
public Tb_UserP[] newArray(int size) {
return new Tb_UserP[0];
}
};
}
Intent intent = new Intent(mContext, CardViewActivity.class);
intent.putExtra("userData", tb_userP);
Tb_UserP tb_userP = getIntent().getParcelableExtra("userData");