1. ホーム
  2. android

[解決済み] オブジェクトのリストを含むパーセンタブルオブジェクトを渡すには?

2022-12-15 18:22:24

質問

私は 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 ???????;
    }
}

どのように解決するのですか?

もしクラス Product が parcelable プロトコルと互換性がある場合、ドキュメンテーションにしたがって、以下が動作するはずです。

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