2017-08-01 82 views
-2

我有一個用戶信息填充的自定義類。我使用ArrayList來保存所有的用戶類數據。我想將數組傳遞給可以讀取和修改的另一個活動。由於數組可能很大,因此我需要儘可能高效和快速地完成此過程,這就是爲什麼我選擇使用Parcelable而不是Serializable。Kotlin將ListArray傳遞給另一個使用Parcelable的活動

我在使用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) 
     } 
    } 
} 
+0

你在哪裏卡住了? – Les

+0

Android Studio有一個功能,您可以將Java代碼粘貼到Kotlin類中,並將其轉換爲Kotlin。這可能足以幫助您解決問題 – Milk

+0

我不知道該做什麼或使用什麼代碼。有沒有關於如何做到這一點Kotlin教程 –

回答

1

使用這樣的事情...

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") 
    } 
} 
+0

這是在Java中,我正在使用Kotlin –

+0

我已將它更改爲Kotlin。希望這可以幫助 – Abhinash

+0

謝謝!這工作和幫助了很多。 –

相關問題