如何通过 kotlin 中的意图传递对象的 MutableList
Posted
技术标签:
【中文标题】如何通过 kotlin 中的意图传递对象的 MutableList【英文标题】:How to pass MutableList of object via intent in kotlin 【发布时间】:2020-07-29 06:24:11 【问题描述】:我的数据类为
@Parcelize
data class Workouts(val id:Int ,val name:String,val image:Int,val time:Long):Parcelable
在一项活动中,我初始化了可变列表,并向 MutuableList 添加了一些数据
val listRandom= mutableListOf<Workouts>()
listRandom.add(some datas............)
现在我使用 Intent 将 listRandom 传递给下一个活动
val intent =Intent(this,StartWorkout::class.java)
intent.putExtra("workoutlist",listRandom as Parcelable)
现在在下一个活动中,我正在尝试接收数据
val randomWorkout =intent.getParcelableExtra<MutableList<Workouts>>("workoutlist")
所以在从 Intent 接收数据时出现错误,它说 Expected Parcelable but found MutuableList
所以我想做的只是传递对象列表,所以有没有其他方法可以做到这一点?
【问题讨论】:
【参考方案1】:只需将您的 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")
它会起作用的。
【讨论】:
它说 Type inference failed: Not enough information to infer parameter T in fun将putParcelableArrayListExtra
与ArrayList
一起使用
val listRandom= ArrayList<Workouts>()
val intent = Intent(this, StartWorkout::class.java)
intent.putParcelableArrayListExtra("workoutlist",listRandom)
然后用
val list=intent?.getParcelableArrayListExtra<Workouts>("workoutlist")
【讨论】:
另一个一开始没有展示如何转换的人以上是关于如何通过 kotlin 中的意图传递对象的 MutableList的主要内容,如果未能解决你的问题,请参考以下文章
将一个 mutableList 从活动 A 传递到 Kotlin 中的活动 B。