android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable。
Parcelable为Android特有的序列化方法。
以下对person进行Parcelable序列化封装方法:
package person;
import java.util.List;
import android.R.integer;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable.Creator;
public class Person implements Parcelable {
private String id;
private String name;
private String password;
private String gender;
private List<String> interests;
public Person(Parcel source) {
id = source.readString();
name = source.readString();
password = source.readString();
gender = source.readString();
interests = source.readArrayList(List.class.getClassLoader());
}
public Person() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public List<String> getInterests() {
return interests;
}
public void setInterests(List<String> interests) {
this.interests = interests;
}
@Override
public int describeContents() {
return 0;
}
//实现Parcelable的writeToParcel方法
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(name);
dest.writeString(password);
dest.writeString(gender);
dest.writeList(interests);
}
public static final Parcelable.Creator<Person> CREATOR = new Creator<Person>(){
@Override
public Person createFromParcel(Parcel source) {
return new Person(source);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
@Override
public String toString() {
return "Person [id=" + id + ",name=" + name + ", password=" + password + ", gender="
+ gender + ", interests=" + interests + "]";
}
}
为什么要把person序列化呢?因为在activities相互交换数据的时候能够方便的传递出去。
代码如下:
Person person =new Person();
person.setId(id);
person.setName(name);
person.setPassword(password);
person.setGender(gender);
person.setInterests(interests);
Intent intent =new Intent();
intent.setAction("android.intent.action.SHOW");
intent.putExtra("person", person);
startActivity(intent);
在接受数据和显示的时候:
Intent intent = getIntent();
Person person = intent.getParcelableExtra("person");
textview1.setText("id"+ " "+id+
"\n姓名"+person.getName()+
"\n密码"+person.getPassword()+
"\n性别"+person.getGender()+
"\n兴趣爱好"+person.getInterests());
所以数据的序列化,对于数据的传递和交换之间,有着很大的方便之处。