3

我们如何在一个意图中包裹嵌套对象?.
例如,假设有一个对象 A 包含一个字符串变量和另一个对象 B。现在 B 包含对象 C 。C 包含一个字符串列表。那么我如何才能按意图包裹对象 A。
对此的任何帮助将不胜感激。
提前致谢。

执行:

public static class A 
{
    private B  ObjectB;
}

public static class B 
{
    private String type;
    private List<C> C;
}

public static class C 
{
    private List<D> D;
}

public static class D 
{
    private String id;
    private String name;
    private String address;
    private String email;
}

如何为 C 类编写 parcelable。我正在使用

dest.writeParceable(ObjectC,flag)

阅读:

in.readParcelable(C.getClass().getClassLoader());

但它不工作

4

2 回答 2

1

您必须为对象 B 实现 parcelable,然后为对象 A 实现 parcelable。我从来没有这样做过,但上面应该可以工作。

编辑

请参阅下面的代码片段,其中说明了如何为 C 类实现 parcelable。

  1. 首先为 D 类实现 parcelable,如下所示:

    dest.writeString(id); 
    dest.writeString(name);  
    dest.writeString(address);  
    dest.writeString(email);
    
    id = in.readString();  
    name = in.readString();  
    address = in.readString();  
    email = in.readString();  
    
  2. 然后为 C 类实现 parcelable,如下所示:

    dest.writeList(D);
    
    in.readList(D,this.getClass().getClassLoader());
    

这是未经测试的代码,因为我从未实现过嵌套打包,但值得一试。希望有帮助。

于 2011-07-10T18:08:51.880 回答
0

我看到的一种方法是使用可序列化的

例如。

如果你有一个变量:

Date createdAt;

然后writeToParcel(Parcel out, int flags)你可以写:

out.writeSerializable(createdAt); 

要读回 yoy 的值,请使用:

createdAt = (Date) in.readSerializable();

话虽如此,但 Parcelable 是专门创建的,因为 Java 序列化被认为太慢了。因此,虽然这很有效,但将其用于较大的数据并不是一个好主意。

于 2013-03-24T00:16:59.737 回答