为了账号安全,请及时绑定邮箱和手机立即绑定

帮助传递ArrayList和parcelable Activity

/ 猿问

帮助传递ArrayList和parcelable Activity

繁花不似锦 2019-12-13 15:10:24

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

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

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


查看完整描述

3 回答

?
莫回无

我可以在这里看到许多问题:


为什么要使用addressParcelable?为什么不使地址实现Parcelable,然后使用:


intent.putParcelableArrayListExtra( "addresses", addyExtras );

您的可包裹对象必须包含一个静态CREATOR。有关详细信息,请参见文档。


在致电之前,您实际上并未在意图中添加任何其他功能startActivity()。有关建议,请参见第1点。


我认为您需要解决所有这些问题才能使其正常运行。



查看完整回答
反对 回复 2019-12-14
?
翻过高山走不出你

可以更简单地完成它,而无需实现Parcelable... 的所有艰辛工作ArrayList(但不是任何一项ListSerializable。因此,您可以使用放置整个列表,putExtra()并使用来检索它getSerializableExtra(),如Sam所说。

但是,我想补充一件事:数组列表存储的对象也必须实现Serializable...并且该对象可能包含的所有其他复杂对象(在您的情况下,都不是)也必须实现(因此它是递归的-在为了序列化一个对象,您必须能够序列化其所有字段)。

现在,您可能会问自己,为什么要实施Serializable而不是Parcelable何时已经有读写读写数组列表的方法?好吧...区别在于简单性-只需添加implements Serializableprivate static final long serialVersionUID = SOME_CONSTANT,您就可以完成!这就是为什么我从不使用Parcelable-您可以使用Serializable字面意义上的两行代码来完成所有这些事情-而不是许多方法继承和所有这些东西...



查看完整回答
反对 回复 2019-12-14
?
holdtom

迈克dg是正确的!

putExtra()并且getSerializable()将存储和检索ArrayList<>您的自定义对象,并实现无需接口。为我工作!


查看完整回答
反对 回复 2019-12-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信