将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。

Posted

技术标签:

【中文标题】将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。【英文标题】:Pass a mutableList from activity A to activity B in Kotlin. 【发布时间】:2018-07-10 12:29:42 【问题描述】:

我正在尝试通过 Kotlin 中的意图将数据从活动 A 传递到活动 B

问题是我有一个videos: MutableList<Video>intent.putParcelableArrayListExtra("VIDEOS", videos) 只接受ArrayList<out Parcelable> 作为参数。

问题

*。如何将 mutableList 数据从活动 A 发送到活动 B

*。或者我必须将其转换为ArrayList<Video> 吗?

PS: Videoimplements Parcelable

【问题讨论】:

【参考方案1】:

如果您想坚持通过 Intent 传递它,则将其转换为 ArrayList(或将其存储为一个?)是一种简单的解决方案。有一个ArrayList constructor 将集合作为其参数:

intent.putParcelableArrayListExtra("VIDEOS", ArrayList(videos))

【讨论】:

当这个数组得到时,第二个活动应该如何表现?因为似乎当我们使用 "getParcelableArrayListExtra" 时,它会出错【参考方案2】:

对于那些询问如何创建 Parcelable 类的人,这是我在 Kotlin 中提出的解决方案

Parcelable 类:

@Parcelize
data class ExampleModel(
        var stringOne: String,
        var stringTwo: String): Parcelable

然后在 Activity A 中,您可以创建一个 ArrayList 并通过 Intent 将其发送到 Activity B

private var exampleMutableList: MutableList<ExampleModel> = arrayListOf()
exampleMutableList.add(ExampleModel("hello", "world"))
intent.putExtra("example", ArrayList(exampleMutableList))

在活动 B 中,我们可以收到我们的 ArrayList:

exampleMutableList = intent.getParcelableArrayListExtra<ExampleModel>("example") as ArrayList<ExampleModel>

一切顺利!

【讨论】:

这是一个非常完整的答案。应该接受一个。

以上是关于将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像从活动 A 传递到活动 B?

如何将整数从一个活动传递到另一个活动?

如何将数据从活动 A 传递/保存到 B,然后再传递到 B?

将活动之间的数据从列表视图传递到另一个活动

将列表从一个活动传递到另一个活动

将图像从活动传递到另一个活动?