用于自定义对象的 Android 房间类型转换器

imn*_*imn 7 java android kotlin android-room

我在 Room 中使用自定义对象列表时遇到错误。

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
Run Code Online (Sandbox Code Playgroud)

所以我的数据类是这样的:

@Entity(tableName = "calorie_daily_table")
data class CalorieDaily(
@PrimaryKey
var date: String,
var breakfast: List<Meal>)

data class Meal(
var foodItem: String,
var foodQuantity: String,
var calorie: Int)
Run Code Online (Sandbox Code Playgroud)

我如何编写一个 TypeConverter 来处理这个问题?

所以,我有这样的事情:

class Converter {

var gson = Gson()

@TypeConverter
fun foodItemToString(foodItems: List<FoodItem>): String {
    return gson.toJson(foodItems)
}

@TypeConverter
fun stringToFoodItem(data: String): List<FoodItem> {
    val listType = object : TypeToken<List<FoodItem>>() {
    }.type
    return gson.fromJson(data, listType)
}
}
Run Code Online (Sandbox Code Playgroud)

但是,仍然遇到同样的错误。

小智 1

您必须将注释添加@Embedded到第二个数据类中Meal