【发布时间】:2019-07-08 01:37:56
【问题描述】:
我试图为 Room 创建一个数据类,并且该类还有一个仅用于视图的字段。我不想将数据保存到 Room。
@Entity(tableName = "MyTable")
@Parcelize
data class MyTable(
@SerializedName("id") @PrimaryKey val id: String,
@SerializedName("field1") val field1: String?,
var selected: Boolean? = false //todo use @Ignore
) : Parcelable
上面的代码有效。但是,每当我尝试将@Ignore 注释与带有selected 变量的变量一起使用时。它给了我以下错误
error: Entities and Pojos must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
如果我从构造函数中删除变量,例如
@Entity(tableName = "MyTable")
@Parcelize
data class MyTable(
@SerializedName("id") @PrimaryKey val id: String,
@SerializedName("field1") val field1: String?
) : Parcelable{
var selected: Boolean? = false //todo use @Ignore
}
selected 字段不会被写入包裹中。如何在不创建列的情况下将变量保留在类中并仍将其保留在包裹中?
谢谢
【问题讨论】:
-
我认为你可以有一个空的构造函数。你有什么错误吗?
-
我尝试使用空构造函数。仍然无法正常工作。我还将@ignore 与构造函数一起使用。但没用
-
@Parcelize 要求在主构造函数中声明所有序列化属性。所以我认为你必须实施你的自定义包裹。我希望这个答案能让你更清楚stackoverflow.com/questions/53312247/…
-
您是否尝试过不使用数据类而只使用普通类?
标签: android kotlin android-room