我正在尝试使我的对象可打包。但是,我有自定义对象,这些对象有 ArrayList 我制作的其他自定义对象的属性。
最好的方法是什么?
Best Answer-推荐答案 strong>
您可以找到一些示例 here , here (code is taken here) , 和 here .
您可以为此创建一个 POJO 类,但您需要添加一些额外的代码来使其 Parcelable .看看实现。
public class Student implements Parcelable{
private String id;
private String name;
private String grade;
// Constructor
public Student(String id, String name, String grade){
this.id = id;
this.name = name;
this.grade = grade;
}
// Getter and setter methods
.........
.........
// Parcelling part
public Student(Parcel in){
String[] data = new String[3];
in.readStringArray(data);
// the order needs to be the same as in writeToParcel() method
this.id = data[0];
this.name = data[1];
this.grade = data[2];
}
@Оverride
public int describeContents(){
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringArray(new String[] {this.id,
this.name,
this.grade});
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public Student createFromParcel(Parcel in) {
return new Student(in);
}
public Student[] newArray(int size) {
return new Student[size];
}
};
}
一旦你创建了这个类,你可以很容易地通过 Intent 传递这个类的对象。像这样,并在目标 Activity 中恢复这个对象。
intent.putExtra("student", new Student("1","Mike","6"));
在这里,学生是您从 bundle 中解包数据所需的 key 。
Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");
此示例仅显示 String 类型。但是,您可以打包任何类型的数据。试试看。
编辑:另一个 example , 由 Rukmal Dias 建议.
关于android - 如何使我的自定义对象 Parcelable?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/7181526/
|