Activity 등에 클래스 데이터를 전달하기위해 Serialization, Deserialization하는 코드로 화면 간 데이터는 최소화하여 전달하도록 권장하고 있으므로 그냥 방법만 알아두자
@Entity(tableName = "card_table")
data class Card(
@PrimaryKey(autoGenerate = true) val id: Long?,
@ColumnInfo(name = "card_name") val cardName: String?,
@ColumnInfo(name = "card_number") val cardNumber: String?,
@ColumnInfo(name = "limit_amount") val limitAmount: Long = 0,
@ColumnInfo(name = "description") val description: String?
): Parcelable {
constructor(name: String, number: String, limit: Long, desc: String): this(null, name, number, limit, desc)
constructor(parcel: Parcel) : this(null, parcel.readString(), parcel.readString(), parcel.readLong(), parcel.readString())
override fun describeContents(): Int {
return 0
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(cardName)
parcel.writeString(cardNumber)
parcel.writeLong(limitAmount)
parcel.writeString(description)
}
companion object CREATOR : Parcelable.Creator<Card> {
override fun createFromParcel(parcel: Parcel): Card {
return Card(parcel)
}
override fun newArray(size: Int): Array<Card?> {
return arrayOfNulls(size)
}
}
}
위와 같이 boilerplate 코드와 override 함수들로인해 data class의 코드가 많이 복잡해지고 attribute의 non-null 속성도 보장하지 못하게 된다.
'Android' 카테고리의 다른 글
Floating Action Button (0) | 2021.03.29 |
---|---|
개발 프로젝트에 Firebase 셋팅, 개발중인 앱 Firebase에 추가 (0) | 2019.03.10 |
안드로이드 Application class (0) | 2019.03.05 |
안드로이드 앱 개발의 기본 아키텍쳐 (0) | 2019.03.01 |