如何在kotlin中通过intent传递对象的MutableList?

3 人关注

我的数据类是

@Parcelize
data class Workouts(val id:Int ,val name:String,val image:Int,val time:Long):Parcelable

在一个活动中,我初始化了MutuableList,并向MutuableList添加了一些数据。

   val listRandom= mutableListOf<Workouts>()
     listRandom.add(some datas............)

现在我已经用Intent来传递列表随机到下一个活动

 val intent =Intent(this,StartWorkout::class.java)
            intent.putExtra("workoutlist",listRandom as Parcelable)

现在,在下一个活动中,我试图接收数据为

 val randomWorkout =intent.getParcelableExtra<MutableList<Workouts>>("workoutlist")

因此,在接收来自Intent的数据时出现了错误,它说预期是Parcelable,但发现MutuableList

所以我想做的只是传递对象的列表,那么有什么方法可以用其他方式来做吗?

android
kotlin
android-intent
pawan Acharya
pawan Acharya
发布于 2020-04-16
2 个回答
Mehul Kabaria
Mehul Kabaria
发布于 2020-04-16
已采纳
0 人赞同

只需将您的 mutableListOf<Workouts>() 转换为ArrayList,如下所示。

val listRandom= ArrayList<User>()
val intent = Intent(this, StartWorkout::class.java)
intent.putExtra("workoutlist",listRandom)

下一个活动。

val randomWorkout : ArrayList<User> = intent.getParcelableExtra("workoutlist")

it will work.

It says Type inference failed: Not enough information to infer parameter T in fun <T : Parcelable!> getParcelableExtra(p0: String!): T! Please specify it explicitly.
ADM
ADM
发布于 2020-04-16
0 人赞同

Use putParcelableArrayListExtra with ArrayList

val listRandom= ArrayList<Workouts>()
val intent = Intent(this, StartWorkout::class.java)
intent.putParcelableArrayListExtra("workoutlist",listRandom)