Reputation: 1294
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: Video
implements Parcelable
Upvotes: 8
Views: 9760
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
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