我如何在 Android Kotlin 的 Room Db 中保存自定义列表?
How do i save the custome list in Room Db in Android Kotlin?
我的模型Class
@Entity(tableName = "Custome Tasks")
data class CustomeTask(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
@NonNull
val title: String,
@NonNull
@TypeConverters(DataConverter::class)
val tasks: List<Task>
)
任务数据class
data class Task(
val title : String ,
val time : Int
)
注意:我在任务 Class 中有一个 String 和 Int。我认为这是挑战。
我通过搜索 google
使用了这个打字转换器
class DataConverter {
@TypeConverter
fun fromOptionValuesList(tasks:
List<CustomeTask>?): String? {
if (tasks == null) {
return null
}
val gson = Gson()
val type: Type = object :
TypeToken<List<CustomeTask>?>() {}.type
return gson.toJson(tasks, type)
}
@TypeConverter
fun toOptionValuesList(tasks: String?): List<CustomeTask>? {
if (tasks == null) {
return null
}
val gson = Gson()
val type = object :
TypeToken<List<CustomeTask>?>() {}.type
return gson.fromJson(tasks, type)
}
}
我想将该任务列表保存在 Table 中。
怎么能这样。
您所做的一切都是正确的,除了您在 DataConverter 中传递的 class。您已经传递了 CustomeTask
class,这是实体数据 class 而不是应该传递的 Task
Class。只需更新应该在 DataConverter 中从 CustomeTask
转换为 Task
Class 的模型,您就可以开始了。
class DataConverter {
@TypeConverter
fun fromOptionValuesList(tasks:
List<Task>?): String? {
if (tasks == null) {
return null
}
val gson = Gson()
val type: Type = object :
TypeToken<List<Task>?>() {}.type
return gson.toJson(tasks, type)
}
@TypeConverter
fun toOptionValuesList(tasks: String?): List<Task>? {
if (tasks == null) {
return null
}
val gson = Gson()
val type = object :
TypeToken<List<Task>?>() {}.type
return gson.fromJson(tasks, type)
}
}
我的模型Class
@Entity(tableName = "Custome Tasks")
data class CustomeTask(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
@NonNull
val title: String,
@NonNull
@TypeConverters(DataConverter::class)
val tasks: List<Task>
)
任务数据class
data class Task(
val title : String ,
val time : Int
)
注意:我在任务 Class 中有一个 String 和 Int。我认为这是挑战。 我通过搜索 google
使用了这个打字转换器class DataConverter {
@TypeConverter
fun fromOptionValuesList(tasks:
List<CustomeTask>?): String? {
if (tasks == null) {
return null
}
val gson = Gson()
val type: Type = object :
TypeToken<List<CustomeTask>?>() {}.type
return gson.toJson(tasks, type)
}
@TypeConverter
fun toOptionValuesList(tasks: String?): List<CustomeTask>? {
if (tasks == null) {
return null
}
val gson = Gson()
val type = object :
TypeToken<List<CustomeTask>?>() {}.type
return gson.fromJson(tasks, type)
}
}
我想将该任务列表保存在 Table 中。 怎么能这样。
您所做的一切都是正确的,除了您在 DataConverter 中传递的 class。您已经传递了 CustomeTask
class,这是实体数据 class 而不是应该传递的 Task
Class。只需更新应该在 DataConverter 中从 CustomeTask
转换为 Task
Class 的模型,您就可以开始了。
class DataConverter {
@TypeConverter
fun fromOptionValuesList(tasks:
List<Task>?): String? {
if (tasks == null) {
return null
}
val gson = Gson()
val type: Type = object :
TypeToken<List<Task>?>() {}.type
return gson.toJson(tasks, type)
}
@TypeConverter
fun toOptionValuesList(tasks: String?): List<Task>? {
if (tasks == null) {
return null
}
val gson = Gson()
val type = object :
TypeToken<List<Task>?>() {}.type
return gson.fromJson(tasks, type)
}
}