android Intent 传递 List 利用Serializable

Intent是Activity与Activity之间,Activity与Service之间传递参数的介质

 

Intent.putExtras(key, value)几乎可以包括各种类型的值,但是却没有类似List<Object>之类的传递参数

 

再加班无聊的时候,我试了试,发现可以把list强转成Serializable类型,然后通过putExtras(key, (Serializable)list)方法传递过去,接受的时候用(List<YourObject>) getIntent().getSerializable(key)就可以接受到List<YourObject>数据了

 

但是最重要的一点是:你的YourObject类必须要实现Serializable接口,切记切记,不然会报错,运行时异常(与parcel相关)

 

总结:保证你自己定义的类实现了Serializable接口,然后传递list的时候强转成Serializable类型,接受的时候再转换回来就可以了!

 

祝大家晚安!

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
如果你想在 Android 中使用 Intent 传递 List 对象,你需要确保该对象序列化,然后将 List 对象放入 Intentextras 中。 首先,你需要确保 List 中的对象实现了 Serializable 或 Parcelable 接口。Parcelable 更高效,但是 Serializable 更容易实现。以下是一个实现 Serializable 接口的示例类: ``` public class MyObject implements Serializable { private int id; private String name; public MyObject(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } } ``` 然后,你可以将 List 对象放入 Intentextras 中: ``` List<MyObject> myList = new ArrayList<>(); myList.add(new MyObject(1, "John")); myList.add(new MyObject(2, "Jane")); Intent intent = new Intent(this, MyActivity.class); intent.putExtra("myList", (Serializable) myList); startActivity(intent); ``` 最后,在接收 Intent 的 Activity 中,你可以从 extras 中获取 List 对象: ``` List<MyObject> myList = (List<MyObject>) getIntent().getSerializableExtra("myList"); ``` 如果你的对象实现了 Parcelable 接口,你可以使用以下代码将 List 对象放入 Intentextras 中: ``` List<MyObject> myList = new ArrayList<>(); myList.add(new MyObject(1, "John")); myList.add(new MyObject(2, "Jane")); Intent intent = new Intent(this, MyActivity.class); intent.putParcelableArrayListExtra("myList", (ArrayList<MyObject>) myList); startActivity(intent); ``` 最后,在接收 Intent 的 Activity 中,你可以从 extras 中获取 List 对象: ``` List<MyObject> myList = getIntent().getParcelableArrayListExtra("myList"); ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值