Как я могу разобрать список <Int>в Kotlin? - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь разобрать список Int.

Я пробовал это решение: Как обработать список с kotlin , но не сработало

data class Pizza(
   var ingredients: ArrayList<Int>,
   val name: String,
   val imageUrl: String
) : Parcelable {
constructor(parcel: Parcel) : this(
        TODO("ingredients"),
        parcel.readString(),
        parcel.readString()) {
}

override fun writeToParcel(parcel: Parcel, flags: Int) {
    parcel.writeString(name)
    parcel.writeString(imageUrl)
}

override fun describeContents(): Int {
    return 0
}

companion object CREATOR : Parcelable.Creator<Pizza> {
    override fun createFromParcel(parcel: Parcel): Pizza {
        return Pizza(parcel)
    }

    override fun newArray(size: Int): Array<Pizza?> {
        return arrayOfNulls(size)
    }
}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Существует несколько способов записи / чтения списка в / из посылки, вот простое решение.

Во-первых, используйте writeList , чтобы записать список в посылку

override fun writeToParcel(parcel: Parcel, flags: Int) {
    parcel.writeList(ingredients)
    parcel.writeString(name)
    parcel.writeString(imageUrl)
}

Затем используйте readArrayList , чтобы прочитать список из посылки.

constructor(parcel: Parcel) : this (
    parcel.readArrayList(Int::class.java.classLoader) as ArrayList<Int>,
    parcel.readString(),
    parcel.readString()
)

Надеюсь, это поможет.

0 голосов
/ 17 февраля 2019

Почему бы вам просто не попробовать @Parcelize!Еще одна интересная особенность Kotlin.

Включите экспериментальный котлин в gradle

//Make sure you have adeed 
apply plugin: ‘kotlin-android-extensions’

androidExtensions {
    experimental = true
}

Затем

@Parcelize
data class Pizza(
   var ingredients: ArrayList<Int>,
   val name: String,
   val imageUrl: String
) : Parcelable

Вот и все.

...