У меня есть класс данных как

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

И в одном упражнении я инициализировал изменяемый список, а также добавил некоторые данные в MutableList

   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")

Поэтому ошибка возникает при получении данных из намерения: Ожидаемый Parcelable, но найден MutuableList

Итак, что я пытаюсь сделать, это просто передать список объектов, так есть ли способ сделать это по-другому?

3
pawan Acharya 16 Апр 2020 в 08:04

2 ответа

Лучший ответ

Просто конвертируйте 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");

Это сработает.

0
Mehul Kabaria 16 Апр 2020 в 05:47

Используйте putParcelableArrayListExtra с ArrayList

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

И получить это с

val list=intent?.getParcelableArrayListExtra<Workouts>("workoutlist")
0
ADM 16 Апр 2020 в 05:43