2017-08-01 1 views
-2

私はカスタムクラスにユーザーの情報を埋め込んでいます。私はすべてのUserクラスのデータを保持するためにArrayListを使用します。配列を読み込み、変更できる別のアクティビティに渡したいと思います。配列が大きくなる可能性があるので、できるだけ効率的かつ高速に処理する必要があります。そのため、Serializableの代わりにParcelableを使用する理由があります。Kotlin Parcelableを使用してListArrayを別のアクティビティに渡す

私は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

ありがとう!これはうまくいっていました。 –

関連する問題