android - 如何传递包含对象列表的可打包对象?

标签 android android-activity android-intent

我在下面创建了一个 Parcelable 对象,我的对象包含一个 List 产品。在我的构造函数中,如何处理为 List 重新创建 Parcelable

我已经检查了包裹中所有可用的方法,所有可用的方法都是 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 协议(protocol)兼容,则应根据文档进行以下操作。

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

关于android - 如何传递包含对象列表的可打包对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300608/

相关文章:

android - 如何将文本粘贴到 Cloud9 编辑器中?

android - 在操作系统重启后调用 onActivityResult() 之前是否重新创建了 Activity 的 View ?

Android:如何在后台启动 Activity

MongoDB数据库架构设计

java - Android 应用程序没有互联网连接时弹出窗口

java - 主应用程序下载另一个应用程序然后使用它

android - 德尔福 XE5 Firemonkey : Single code base for mobile/Win/OSX?

java - 有没有办法让我的前台服务不间断地运行。当最小化窗口中的十字(X)按钮清除手机缓存时它会停止吗?

android - 如何在我的应用程序上为所有手机调用 Android 计算器

Android 模拟从服务中按下回键