我可以在 Kotlin 中对 Room 和 API 调用使用相同的数据 class 吗?
Can I use same data class for Room and API calls in Kotlin?
我的应用程序中有一个相当简单的数据 class:
data class ModelSlide(
val title: String,
val info: String,
val image: String
)
当我创建一个 API 调用时,我返回 json。我使用来自 json 和 ModelSlide
的信息来创建 ArrayList<ModelSlide>
。然后我使用适配器将此 arrayList 加载到 viewpager 中。相当简单的东西。
现在,我才刚刚开始使用 Room。遗憾的是,由于我在这方面还很陌生,所以我一直在为 Room 创建重复数据 classes,如下所示:
@Entity
data class User(
@PrimaryKey val slideId: Int,
@ColumnInfo(name = "title") val title: String?,
@ColumnInfo(name = "info") val firstName: String?,
@ColumnInfo(name = "image") val lastName: String?
)
这种方法可行,但对我这个 Room 的初学者来说,这在某种程度上似乎是多余的。
我可以将我的两个工作流与相同的数据结合起来吗class?
回顾
我使用第一个 ModelSlide
class 创建 ArrayList<ModelSlide>
并在适配器的帮助下将幻灯片加载到 Viewpager
我为 ModelSlide
创建了第二个数据 class 以与 Room 库一起使用
我的问题
我可以使用相同的数据 class 来创建 ArrayLists
和 Room 吗?
如果是这样,数据 class 会是什么样子?
根据您的要求,您可以使用单个数据 class 创建 ArrayLists
并使用 Room
。检查以下内容:
@Entity(tableName = "User")
data class ModelSlide(
val title: String?,
val info: String?,
val image: String?,
@PrimaryKey(autoGenerate = true)
val slideId: Int = 0
)
我的应用程序中有一个相当简单的数据 class:
data class ModelSlide(
val title: String,
val info: String,
val image: String
)
当我创建一个 API 调用时,我返回 json。我使用来自 json 和 ModelSlide
的信息来创建 ArrayList<ModelSlide>
。然后我使用适配器将此 arrayList 加载到 viewpager 中。相当简单的东西。
现在,我才刚刚开始使用 Room。遗憾的是,由于我在这方面还很陌生,所以我一直在为 Room 创建重复数据 classes,如下所示:
@Entity
data class User(
@PrimaryKey val slideId: Int,
@ColumnInfo(name = "title") val title: String?,
@ColumnInfo(name = "info") val firstName: String?,
@ColumnInfo(name = "image") val lastName: String?
)
这种方法可行,但对我这个 Room 的初学者来说,这在某种程度上似乎是多余的。
我可以将我的两个工作流与相同的数据结合起来吗class?
回顾
我使用第一个
ModelSlide
class 创建ArrayList<ModelSlide>
并在适配器的帮助下将幻灯片加载到 Viewpager我为
ModelSlide
创建了第二个数据 class 以与 Room 库一起使用
我的问题
我可以使用相同的数据 class 来创建 ArrayLists
和 Room 吗?
如果是这样,数据 class 会是什么样子?
根据您的要求,您可以使用单个数据 class 创建 ArrayLists
并使用 Room
。检查以下内容:
@Entity(tableName = "User")
data class ModelSlide(
val title: String?,
val info: String?,
val image: String?,
@PrimaryKey(autoGenerate = true)
val slideId: Int = 0
)