カスタムオブジェクトを Parcelable にするにはどうすればいいですか? 質問する

カスタムオブジェクトを Parcelable にするにはどうすればいいですか? 質問する

オブジェクトを Parcelable にしようとしています。ただし、カスタム オブジェクトがあり、それらのオブジェクトにはArrayList私が作成した他のカスタム オブジェクトの属性があります。

これを行う最善の方法は何でしょうか?

ベストアンサー1

これに該当する例をいくつか挙げてみましょうここここ(コードはここから取得)、 そしてここ

このための 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次のように簡単に渡し、ターゲット アクティビティでこのオブジェクトを回復できます。

intent.putExtra("student", new Student("1","Mike","6"));

ここで、学生は、バンドルからデータを分解するために必要なキーです。

Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");

この例ではString型のみを示しています。ただし、必要な種類のデータをパッケージ化できます。試してみてください。

編集: 別の、 によって提案されましたルクマル・ディアス

おすすめ記事