You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何从Activity A向Activity B传递MutableList数据?

解决Kotlin中通过Intent传递MutableList

嘿,我来帮你搞定这个Intent传数据的小麻烦~ 既然你的Video类已经实现了Parcelable接口,那事情就简单多了,咱们一步步来:

1. 如何将MutableList数据从Activity A传递到Activity B?

最直接且安全的方式是把MutableList<Video>转换成ArrayList<Video>,因为Intent的putParcelableArrayListExtra()方法只接受ArrayList<out Parcelable>类型的参数。具体代码如下:

在Activity A中发送数据:

// 假设你已经有了videos: MutableList<Video>对象
val intent = Intent(this, ActivityB::class.java)
// 把MutableList转成ArrayList
val arrayListVideos = ArrayList(videos)
intent.putParcelableArrayListExtra("VIDEOS", arrayListVideos)
startActivity(intent)

在Activity B中接收数据:

// 获取传递过来的ArrayList,为空的话返回空的MutableList兜底
val receivedVideos = intent.getParcelableArrayListExtra<Video>("VIDEOS") ?: mutableListOf()
// 如果你需要继续用MutableList操作,直接用就行——因为ArrayList本身就是MutableList的实现类

如果你的videos本身就是ArrayList的实例(比如初始化时用的val videos = ArrayList<Video>()),也可以直接强转:

intent.putParcelableArrayListExtra("VIDEOS", videos as ArrayList<Video>)

不过这种方式要注意类型安全,如果videos是其他MutableList的实现(比如LinkedList),强转会抛出ClassCastException,所以更推荐用ArrayList(videos)的方式。

2. 是否必须将其转换为ArrayList

是的,必须传递ArrayList类型的实例,因为Android的Intent API中,putParcelableArrayListExtra()方法的参数类型被限定为ArrayList<out Parcelable>,不支持其他List实现类。

当然也有替代方案,比如用putExtra()结合Gson序列化,但这种方式效率远不如Parcelable(Parcelable是Android专门为跨组件通信优化的序列化方式),还要额外处理序列化/反序列化的代码,反而更麻烦。所以还是乖乖转成ArrayList最省心。

内容的提问来源于stack exchange,提问作者Puni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:36:44