How to read/write a boolean when implementing the Parcelable interface?

后端 未结 12 1246
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-29 14:33

I\'m trying to make an ArrayList Parcelable in order to pass to an activity a list of custom object. I start writing a myObjectList cl

12条回答
  •  独厮守ぢ
    2020-11-29 15:27

    Short and simple implementation in Kotlin, with nullable support:

    Add methods to Parcel

    fun Parcel.writeBoolean(flag: Boolean?) {
        when(flag) {
            true -> writeInt(1)
            false -> writeInt(0)
            else -> writeInt(-1)
        }
    }
    
    fun Parcel.readBoolean(): Boolean? {
        return when(readInt()) {
            1 -> true
            0 -> false
            else -> null
        }
    }
    

    And use it:

    parcel.writeBoolean(isUserActive)
    
    parcel.readBoolean()        // For true, false, null
    parcel.readBoolean()!!      // For only true and false
    

提交回复
热议问题