如何用kotlin标记List

我想要通过Bundle传递一个数据类(包含int作为一个属性列表)到其他活动,因此我需要添加Parcelable实现到我的数据类。 任何想法如何包裹这个属性?

data class Test(val id: Long, val files: List?) : Parcelable { constructor(parcel: Parcel) : this( parcel.readLong(), TODO("files")) override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeLong(id) } override fun describeContents(): Int { return 0 } companion object CREATOR : Parcelable.Creator { override fun createFromParcel(parcel: Parcel): Test { return Test(parcel) } override fun newArray(size: Int): Array { return arrayOfNulls(size) } } 

你可以写一个整数列表为int[]

 parcel.writeIntArray(files.toIntArray()) 

确保在回读时使用相同的数据结构:

 files = parcel.createIntArray().toList() 

您可以通过跳过数组表示使用扩展函数更高效:

 parcel.writeIntList(files) files = parcel.createIntList() fun Parcel.writeIntList(input:List) { writeInt(input.size) // Save number of elements. input.forEach(this::writeInt) // Save each element. } fun Parcel.createIntList() : List { val size = readInt() val output = ArrayList(size) for (i in 0 until size) { output.add(readInt()) } return output }