Kotlin使用Parcelable将ListArray传递给另一个Activity

我有一个自定义类充满了用户的信息。 我使用ArrayList来保存所有的用户类数据。 我想将数组传递给可以读取和修改的另一个活动。 由于数组可能很大,因此我需要尽可能高效和快速地完成此过程,这就是为什么我选择使用Parcelable而不是Serializable。

我在使用Kotlin时遇到了麻烦。 有很多的Java教程,但没有在Kotlin,这是什么使这个问题不同,那么所有其他人。 有人可以提供和解释Kotlin的代码如何实现?

这是我迄今为止:

constructor(`in`:Parcel) { CollegeName = `in`.readString() } override fun describeContents(): Int { return 0 } override fun writeToParcel(dest: Parcel?, flags: Int) { } private fun readFromParcel(`in`:Parcel) { CollegeName = `in`.readString() } companion object { @JvmField final val CREATOR: Parcelable.Creator<College> = object: Parcelable.Creator<College> { override fun createFromParcel(source: Parcel): College { return College(source) } override fun newArray(size: Int): Array<College?> { return arrayOfNulls<College>(size) } } } 

使用这样的东西…

  class Series() : Parcelable { private var name: String? = null private var numOfSeason: Int = 0 private var numOfEpisode: Int = 0 constructor(parcel: Parcel) : this() { val data = arrayOfNulls<String>(3) parcel.readStringArray(data) this.name = data[0] this.numOfSeason = Integer.parseInt(data[1]) this.numOfEpisode = Integer.parseInt(data[2]) } override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(name); parcel.writeInt(numOfSeason); parcel.writeInt(numOfEpisode); } private fun readFromParcel(parcel: Parcel){ name = parcel.readString() numOfSeason = parcel.readInt() numOfEpisode = parcel.readInt() } override fun describeContents(): Int { return 0 } companion object CREATOR : Creator<Series> { override fun createFromParcel(parcel: Parcel): Series { return Series(parcel) } override fun newArray(size: Int): Array<Series?> { return arrayOfNulls(size) } } } 

然后在你的活动

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) val i = Intent(this, SecondActivity::class.java) val testing = ArrayList<testparcel>() i.putParcelableArrayListExtra("extraextra", testing) startActivity(i) } class SecondActivity :Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.secondActivty_activity) val testing = this.intent.getParcelableArrayListExtra<Parcelable>("extraextra") } }