如何将List <>写入包裹

public class Category implements Parcelable { private int mCategoryId; private List<Video> mCategoryVideos; public int getCategoryId() { return mCategoryId; } public void setCategoryId(int mCategoryId) { this.mCategoryId = mCategoryId; } public List<Video> getCategoryVideos() { return mCategoryVideos; } public void setCategoryVideos(List<Video> videoList) { mCategoryVideos = videoList; } @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeInt(mCategoryId); parcel.writeTypedList(mCategoryVideos); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Category createFromParcel(Parcel parcel) { final Category category = new Category(); category.setCategoryId(parcel.readInt()); category.setCategoryVideos(parcel.readTypedList()); */// **WHAT SHOULD I WRITE HERE*** return category; } public Category[] newArray(int size) { return new Category[size]; } }; } 

我的代码我使用的模型,实现从parcelable …任何人都可以告诉他们什么叫我写在这行category.setCategoryVideos(parcel.readTypedList())我找不到任何有用的职位。

编辑: category.setCategoryVideos(parcel.readTypedList(mCategoryVideos,Video.CREATOR)); 在这里mCategoryVideos我有不能解决错误。

Solutions Collecting From Web of "如何将List <>写入包裹"

有Parcelable类的列表方法,你可以在这里看看它们:

readList(List outVal,ClassLoader loader)

writeList(List val)

在你的情况下,它会看起来像:

 List<Object> myList = new ArrayList<>(); parcel.readList(myList,List.class.getClassLoader()); category.setCategoryVideos(myList); 
  public static final Parcelable.Creator<Category> CREATOR = new Parcelable.Creator<Category>() { public Category createFromParcel(Parcel in) { return new Category(in); } public Category[] newArray(int size) { return new Category[size]; } }; private Category(Parcel in) { String[] data = new String[1]; in.readStringArray(data); mCategoryId = Integer.parseInt(data[0]); } public void writeToParcel(Parcel dest, int flags) { dest.writeStringArray(new String[] { mCategoryId }); } 

然后在你的活动..

 public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelableArrayList("mCategoryVideos", (List<? extends Parcelable>)mCategoryVideos); } public void onRestoreInstanceState(Bundle inState) { super.onRestoreInstanceState(inState); if(inState != null) { mCategoryVideos = inState.getParcelableArrayList("mCategoryVideos"); // Restore All Necessary Variables Here } } 

从一个很好的答案:

简单的步骤:

 private List<MyParcelableClass> mList; protected MyClassWithInnerList(Parcel in) { mList = in.readArrayList(MyParcelableClass.class.getClassLoader()); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeList(mList); }