我是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
谢谢你)附言对不起,我的英语
不需要做所有的事情。只需使用@Parcelize
from Kotlin。用@Parcelize
注释所有这些类,并使它们扩展为Parcelable
。
此外,我还会建议您在代码中看到的一些错误:
var
属性都设为val
。它将强制实现不变性,这是Kotlin的基本功能之一。Test
类设为data class
。我看不出您为什么不从中受益。multipleChoiceAnswers
-> MultipleChoiceAnswers
。我们遵循的约定是多种语言,而不仅仅是Kotlin。