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

标签 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.
所以我的数据类是这样的:
@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)
我怎样才能写一个 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)
}
}
但是,仍然得到同样的错误。

最佳答案

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

关于java - 用于自定义对象的 Android 房间类型转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63154562/

相关文章:

java - 我如何使用 string#split 将字符串与分隔符 + - */( ) 和空格分开并将它们保留为额外的标记?

java - 如何在Android应用程序中使用RSS来显示股票交易状态?

android - 如何为 Android 制作邮件按钮

java - 键盘中断布局和行为

android - Firebase Android 自动登录

java - 从线程更新 gui(另一个类)

java - 将字符串中的字符添加到堆栈中

Java 忽略正则表达式以使用 BlueJ 删除重复行

javascript - 从 iOS/Android 上的网络应用程序调用 native 日期选择器

应用更新中的 Android 应用 Play Core 库无法正常工作