我如何在 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)
  

  }
 }