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 ? я пишу это неправильно? читая его неправильно?

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

Заменить:

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

с:

 arrayListOf<OrderedService>().apply { parcelIn.readList(this, OrderedService::class.java.classLoader) } 
Intereting Posts
Почему Котлин не разрешает использовать какой-либо код в основном конструкторе? Как работать с foldRight () в Котлине? В инъекции зависимостей Kodein, как вы можете вставлять экземпляры Kodein в экземпляры? Отправить запрос на другой URL-адрес от Ktor Как получить выбранный элемент из ListView в Котлине? Android – как реализовать несколько ViewHolder для макета заголовка другого для макета модели в адаптере Firestore RecyclerView Как десериализовать ThreeTen LocalDateTime в дооснащении? Как указать параметр типа, который я не знаю Реактивное весеннее имя 5-го уровня безопасности в Котлине Невыполнение результата по результату Получение текущего класса Kotlin: Избегайте создания FqNameUnsafe и FqName Внутренний класс в своем абстрактном суперклассе в Котлине? Какое надлежащее обходное решение для @BeforeAll в Котлине Невозможно подключиться к удаленной базе данных Mongo через Springboot