如何使用嵌套类使可拆分类

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

我是Android开发人员的新手。我面临着这样的事实,我需要将我的课堂重做为Parcelable课堂。而且主要的问题是我的班级中有3个嵌套的班级。

这是我的代码:

class Test      (var id: Int,
                 var numberQuestion: String,
                 var question: String,
                 var questionImageSrc: String,
                 var examination: Boolean,
                 var typeQuestion: String,
                 var singleChoiceAnswers: ArrayList<singleChoiceAnswer>,
                 var multipleChoiceAnswers: ArrayList<multipleChoiceAnswers>,
                 var inputAnswer: ArrayList<inputAnswer>): Parcelable{

    constructor(source: Parcel): this(
        source.readInt(),
        source.readString(),
        source.readString(),
        source.readString(),
        source.readByte(),
        source.readString(),

        // ????

        )

    companion object{
        @JvmField
        val CREATOR = object: Parcelable.Creator<Test>{
            override fun newArray(size: Int) = arrayOfNulls<Test>(size)
            override fun createFromParcel(source: Parcel?): Test {
                return Test(source!!)
            }
        }
    }

    override fun writeToParcel(dest: Parcel?, flags: Int) {
        dest?.writeInt(id)
        dest?.writeString(numberQuestion)
        dest?.writeString(question)
        dest?.writeString(questionImageSrc)
        dest?.writeValue(examination)
        dest?.writeString(typeQuestion)
        dest?.
    }

    override fun describeContents(): Int {
        TODO("Not yet implemented")
    }

}

data class multipleChoiceAnswers(var letter: String,
                                 var text: String,
                                 var correctAnswer: Boolean,
                                 var checked: Boolean)

data class singleChoiceAnswer(var letter: String,
                              var text: String,
                              var correctAnswer: Boolean,
                              var checked: Boolean)

data class inputAnswer(var correctAnswer: String,
                        var userAnswer: String)

我也需要使嵌套类为Parcelable吗?我从JSON获取数据。如果需要,请输入link

谢谢你)附言对不起,我的英语

android kotlin parcelable
1个回答
1
投票

不需要做所有的事情。只需使用@Parcelize from Kotlin。用@Parcelize注释所有这些类,并使它们扩展为Parcelable

此外,我还会建议您在代码中看到的一些错误:

  • 将所有var属性都设为val。它将强制实现不变性,这是Kotlin的基本功能之一。
  • 将您的Test类设为data class。我看不出您为什么不从中受益。
  • 所有类名必须以大写字母开头。 multipleChoiceAnswers-> MultipleChoiceAnswers。我们遵循的约定是多种语言,而不仅仅是Kotlin。
© www.soinside.com 2019 - 2024. All rights reserved.