Puni
Puni

Reputation: 1294

Pass a mutableList from activity A to activity B in Kotlin.

I'm trying to pass data from activity A to activity B through intent in Kotlin.

The problem is I have a videos: MutableList<Video> and the intent.putParcelableArrayListExtra("VIDEOS", videos) only accepts ArrayList<out Parcelable> as arguments.

Questions

*. How do I send a mutableList data from activity A to activity B?

*. Or Do I have to convert it to ArrayList<Video> ?

PS: Videoimplements Parcelable

Upvotes: 8

Views: 9760

Answers (2)

Douglas Hosea
Douglas Hosea

Reputation: 1022

For those asking how the Parcelable class is created, this is the solution I came up with in Kotlin

The Parcelable Class:

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

Then in Activity A you can create an ArrayList and send it via intent to Activity B

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

And in Activity B we can receive our ArrayList:

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

All the best!

Upvotes: 2

zsmb13
zsmb13

Reputation: 89578

Converting it to an ArrayList (or storing it as one in the first place?) is the easy solution if you want to stick to passing it through an Intent. There's an ArrayList constructor that takes a collection as its parameter:

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

Upvotes: 15

Related Questions