Intereting Posts
Смарт-литье в «Тип» невозможно, потому что «переменная» является изменчивым свойством, которое к этому моменту могло быть изменено Kotlin JPA: Как бороться с инициализацией @OneToOne Перевести с Java на Kotlin OnClickListener добавить Google Fit distance (DataPoint выходит за пределы диапазона) Есть ли еще более простой способ выражения анонимных классов в Котлине? Каков правильный подход, когда функция Котлина не принимает тип NULL Как добавить статические методы в классы Java в Котлине Не учитывать компонент Triple в сравнении Является ли формат данных, хранящихся в kotlin.MetaData документированы где угодно? Есть ли лучший способ для фильтра null в списке? Не удалось получить данные из базы данных sqlite Ссылки функций и лямбда искать все разделы и выживать автоматическое перебалансирование потребителей Kafka Почему тип NULL + null неявно String в Kotlin? Возвращать двойной индекс элемента коллекции при повторении

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 посылок"