2

您好,我正在尝试创建一个名为 ParcelableObject 的类,我在其中实现 Parcelable 接口。

然后我将创建其他对象,它们将扩展 ParcelableObject。我这样做是因为我不想在每个对象中编写 Parcelable 接口的方法。

至于现在,我已经设法为包含其他对象的对象(它们都扩展了 ParcelableObject 类)和原始类型做到了这一点。

对于数组和原始类型列表,当然还有数组和对象列表,我遇到了麻烦

我打算将其扩展为涵盖列表、数组。

我这样做的方法是获取给定对象的所有字段

所以这是我的问题。首先这可能吗?其次,我尝试将其扩展为原始类型的数组或列表,但我没有做到。更加具体。现在我正在尝试将其扩展为整数数组或整数列表。正如我所看到的,我无法从包裹中读取整数列表,因为我遇到了转换错误等。所以任何帮助将不胜感激。

围绕这个的基本思想是将其子类的对象存储到 ParcelableObject 中。然后,如果我得到一个对象(不是原始类型),我将其类名写入包裹,然后写入对象。所以当我想从包裹中读取一个对象时,我首先读取带有类名的字符串,使用(Class.forName()等)创建类的新实例,然后将从包裹中读取的对象分配给实例化的对象以上。如果有任何更好的方法来获取 ParcelableObject 的子类的类名,而不是填充包裹不必要的字符串 id 想知道。

这是 ParcelableObject.java 你可以下载整个 android ParcelableObject 项目来测试它。包括演示。在虚拟设备 Nexus S (4.2) 下测试。项目的目标是为 4.0 及更高版本工作。

https://github.com/tchar/ParcelableObject/blob/master/ParcelableObject/src/com/parcelableobject/ParcelableObject.java

更新*** 添加了对原始对象列表的支持。仍然存在原始类型(int 等)的问题,而不是整数和 ParcelableObjects 列表

提前致谢。

4

0 回答 0