Ответ
Для хранения собственных классов на носителе можно использовать сериализацию. В Android доступны несколько вариантов:
- Parcelable – более производительный, но требует ручной реализации:
data class User(val name: String, val age: Int) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString()!!,
parcel.readInt()
)
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(name)
parcel.writeInt(age)
}
companion object CREATOR : Parcelable.Creator<User> {
override fun createFromParcel(parcel: Parcel): User {
return User(parcel)
}
override fun newArray(size: Int): Array<User?> {
return arrayOfNulls(size)
}
}
}
- Serializable – проще в реализации, но медленнее:
data class User(val name: String, val age: Int) : Serializable
- Gson/Jackson – для хранения в виде JSON:
val gson = Gson()
val json = gson.toJson(user)
// Сохранить json в SharedPreferences/файл/БД
Для сложных структур лучше использовать Room или другие ORM.