Как передать разреженный объект, содержащий список объектов?

Я создал объект Parcelable ниже, мой объект содержит List продуктов. В моем конструкторе, как мне обрабатывать воссоздание моего Parcelable для List ?

Я проверил все методы, доступные из пакета, и все, что доступно, – readArrayList(ClassLoader) . Я не уверен, что это лучший подход, и ваш совет будет действительно оценен.

 public class Outfits implements Parcelable { private String url; private String name; private List<Product> products; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Product> getProducts() { return products; } public void setProducts(List<Product> products) { this.products = products; } public void writeToParcel(Parcel dest, int flags) { Log.v("", "writeToParcel..." + flags); dest.writeString(url); dest.writeString(name); dest.writeList(products); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Outfits createFromParcel(Parcel in) { return new Outfits(in); } public Outfits[] newArray(int size) { return new Outfits[size]; } }; @Override public int describeContents() { return 0; } /*** Here how do I populate my List of Products ***/ private Outfits(Parcel in) { url = in.readString(); name = in.readString(); products = in.read ???????; } } 

Solutions Collecting From Web of "Как передать разреженный объект, содержащий список объектов?"

Если класс Product совместим с разборчивым протоколом, следуйте инструкциям в соответствии с документацией.

 products = new ArrayList<Product>(); in.readList(products,null); 

Во-первых, ваш объект Product должен реализовывать Parcelable .

И затем используйте dest.writeTypedList(products) в writeToParcel() .

Наконец, используйте следующий код для разбора списка:

 products = new ArrayList<Product>(); in.readTypedList(products, Product.CREATOR); 

Для получения дополнительной информации обратитесь к Официальному документу :

Это должно работать:

 in.readTypedList(products, Product.CREATOR); 

Parcelable в классе Product, а затем, а затем

in.readList(this.list, Product.class.getClassLoader());

Если какое-либо из вышеперечисленных решений не работает.