8

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

Puni
  • 1,214
  • 2
  • 18
  • 34

2 Answers2

15

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))
zsmb13
  • 85,752
  • 11
  • 221
  • 226
2

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!

Douglas Hosea
  • 1,002
  • 13
  • 30