2017-08-01 369 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

谢谢!这工作和帮助了很多。 –

相关问题