Android如何打包子类,这些子类是从不是抽象的基类扩展而来的

问题描述 投票:0回答:1

我有一个具有属性imageUrl的基类ImageBean现在,子类HeaderBean扩展了ImageBean的更多属性asin,sku,fatherAsin我需要把这两节课打包。我该怎么办?

android parcelable extends parcel
1个回答
0
投票

最重要的代码是readImage(parcel) super.writeToParcel(parcel,flags)

open class ImageBean() : Parcelable {
        var imageUrl:String = ""

        constructor(parcel: Parcel) : this() {
            readImage(parcel)
        }

        fun readImage(parcel: Parcel){
            imageUrl = parcel.readString()?:""
        }

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

        override fun describeContents(): Int {
            return 0
        }

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

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


class HeaderBean() : ImageBean() {
            var asin:String = ""
            var sku:String = ""
            var fatherAsin:String = ""

            constructor(parcel: Parcel) : this() {
                readImage(parcel)
                asin = parcel.readString()?:""
                sku = parcel.readString()?:""
                fatherAsin = parcel.readString()?:""
            }

            override fun writeToParcel(parcel: Parcel, flags: Int) {
                super.writeToParcel(parcel,flags)
                parcel.writeString(asin)
                parcel.writeString(sku)
                parcel.writeString(fatherAsin)

            }

            override fun describeContents(): Int {
                return 0
            }

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

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


    }
© www.soinside.com 2019 - 2024. All rights reserved.