帮助传递ArrayList和parcelable Activity

因此,我一直在搜寻昨天和最后一个夜晚的大部分时间,似乎无法绕过如何将数组列表传递给子活动的想法。有大量传递原始数据类型的示例和摘要,但是我所拥有的是地址类型的数组列表(下面的address.java)。

我在stackoverflow和网络上发现了很多东西,但是除了带有GeoPoint示例的东西之外,没有其他东西引起了很多关注。再次,在我看来,他们只是将GeoPoint对象展平为两个整数并将其传递给我。我无法这样做,因为我的地址类可能会扩展为包括整数,浮点数等。现在,为简单起见,下面的测试应用程序只有两个字符串。我以为,如果我可以让parcelalbe的东西可以工作的话,剩下的事就可以了。

有人可以为非原始对象的ArrayList发布工作示例,还是可以在下面添加代码以使工作正常?


繁花不似锦
浏览 365回答 3
3回答

莫回无

我可以在这里看到许多问题:为什么要使用addressParcelable?为什么不使地址实现Parcelable,然后使用:intent.putParcelableArrayListExtra( "addresses", addyExtras );您的可包裹对象必须包含一个静态CREATOR。有关详细信息,请参见文档。在致电之前,您实际上并未在意图中添加任何其他功能startActivity()。有关建议,请参见第1点。我认为您需要解决所有这些问题才能使其正常运行。

翻过高山走不出你

可以更简单地完成它,而无需实现Parcelable... 的所有艰辛工作ArrayList(但不是任何一项List)Serializable。因此,您可以使用放置整个列表,putExtra()并使用来检索它getSerializableExtra(),如Sam所说。但是,我想补充一件事:数组列表存储的对象也必须实现Serializable...并且该对象可能包含的所有其他复杂对象(在您的情况下,都不是)也必须实现(因此它是递归的-在为了序列化一个对象,您必须能够序列化其所有字段)。现在,您可能会问自己,为什么要实施Serializable而不是Parcelable何时已经有读写读写数组列表的方法?好吧...区别在于简单性-只需添加implements Serializable和private static final long serialVersionUID = SOME_CONSTANT,您就可以完成!这就是为什么我从不使用Parcelable-您可以使用Serializable字面意义上的两行代码来完成所有这些事情-而不是许多方法继承和所有这些东西...

holdtom

putExtra()并且getSerializable()将存储和检索ArrayList<>您的自定义对象,并实现无需接口。为我工作!
打开App,查看更多内容
随时随地看视频慕课网APP