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我无法解决错误。
答案 0 :(得分:30)
有Parcelable类的列表方法,您可以在这里查看它们:
readList (List outVal, ClassLoader loader)
在你的情况下,它看起来像:
List<Object> myList = new ArrayList<>();
parcel.readList(myList,List.class.getClassLoader());
category.setCategoryVideos(myList);
答案 1 :(得分:3)
简单步骤:
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);
}
答案 2 :(得分:2)
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
}
}