Kotlin parcelable и arrayList посылок

Я пытаюсь написать пакетный объект данных для перехода от activityA к activityB в мое приложение для Android.

Мой объект проходит со всеми данными, кроме моего arraylist класса Доступная служба

 data class AvailableService(val id: Int, val name: String, val description: String, val price: Double, val currency: String, val imageUrl: String) : Parcelable { companion object { @JvmField @Suppress("unused") val CREATOR = createParcel { AvailableService(it) } } protected constructor(parcelIn: Parcel) : this(parcelIn.readInt(), parcelIn.readString(), parcelIn.readString(), parcelIn.readDouble(), parcelIn.readString(), parcelIn.readString()) override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeInt(id) dest?.writeString(name) dest?.writeString(description) dest?.writeDouble(price) dest?.writeString(currency) dest?.writeString(imageUrl) } override fun describeContents() = 0 } 

выше – доступный arraylist , затем у меня есть Trip, в котором хранится arraylist AvailableService службы. Я заметил это в отладке, он успешно пишет arraylist , по какой-то причине у меня проблема с чтением данных.

 data class Trip(val id: String, val status: String, val orderedServices: ArrayList<OrderedService>) : Parcelable { companion object { @JvmField @Suppress("unused") val CREATOR = createParcel { Trip(it) } } protected constructor(parcelIn: Parcel) : this(parcelIn.readString(), parcelIn.readString(), arrayListOf<OrderedService>().apply { parcelIn.readArrayList(OrderedService::class.java.classLoader) } ) override fun writeToParcel(dest: Parcel?, flags: Int) { dest?.writeString(id) dest?.writeString(status) dest?.writeList(orderedServices) } override fun describeContents() = 0 } 

в случае, если кто-то задается вопросом о том, что нравится CREATOR, код ниже:

 inline fun <reified T : Parcelable> createParcel( crossinline createFromParcel: (Parcel) -> T?): Parcelable.Creator<T> = object : Parcelable.Creator<T> { override fun createFromParcel(source: Parcel): T? = createFromParcel(source) override fun newArray(size: Int): Array<out T?> = arrayOfNulls(size) } 

опять же, письмо преуспевает, но чтение терпит неудачу, я получаю пустой arraylist .. Я думаю, что часть ошибочна:

 arrayListOf<OrderedService>().apply { parcelIn.readArrayList(OrderedService::class.java.classLoader) } 

есть ли другой способ читать / писать arraylist ? я пишу это неправильно? читая его неправильно?

Заранее благодарю за любую помощь!

Solutions Collecting From Web of "Kotlin parcelable и arrayList посылок"