使用ArrayList 和扩展Parcelable的类

我在使用实现Parcelable的类读取字符串的ArrayList时遇到了麻烦。

我想将3个字符串列表发送到片段。 我不明白的另一件事是我如何使用这个类实际将这些数据发送到Fragment(我在其他地方读到你可以使用你自己的parcelable类来做这个,但我不确切知道如何)。

这是相关的代码,我会在我认为需要帮助的地方发表评论。

package com.tsjd.HotMeals; import java.util.ArrayList; import android.os.Parcel; import android.os.Parcelable; public class RecipeListViewParcer implements Parcelable{ private ArrayList titles; private ArrayList descriptions; private ArrayList images; private RecipeListViewParcer(Parcel in) { titles = in.readArrayList(String.class.getClassLoader()); //Need help here descriptions = in.readArrayList(String.class.getClassLoader()); //Need help here images = in.readArrayList(String.class.getClassLoader()); //Need help here } public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { out.writeList(titles); //Need help here out.writeList(descriptions); //Need help here out.writeList(images); //Need help here } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public RecipeListViewParcer createFromParcel(Parcel in) { return new RecipeListViewParcer(in); } public RecipeListViewParcer[] newArray(int size) { return new RecipeListViewParcer[size]; } }; } 

我已经改变了你的类,添加了一个构造函数来初始化字段,只是将RecipeListViewParcer重命名为RecipeListViewParcel 🙂

 package com.tsjd.HotMeals; import java.util.ArrayList; import android.os.Parcel; import android.os.Parcelable; public class RecipeListViewParcel implements Parcelable{ private ArrayList titles; private ArrayList descriptions; private ArrayList images; public RecipeListViewParcel(ArrayList titles, ArrayList descriptions, ArrayList images) { this.titles = titles; this.descriptions = descriptions; this.images = images; } // Convenient constructor to read from Parcel private RecipeListViewParcel(Parcel in) { titles = in.readArrayList(String.class.getClassLoader()); //Need help here descriptions = in.readArrayList(String.class.getClassLoader()); //Need help here images = in.readArrayList(String.class.getClassLoader()); //Need help here } public int describeContents() { return 0; } // This method does actual job to write into the Parcel and called internally // You need to override this method for each child class @Override public void writeToParcel(Parcel out, int flags) { out.writeList(titles); //Need help here out.writeList(descriptions); //Need help here out.writeList(images); //Need help here } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public RecipeListViewParcel createFromParcel(Parcel in) { return new RecipeListViewParcel(in); } public RecipeListViewParcel[] newArray(int size) { return new RecipeListViewParcel[size]; } }; }