Android 房间模型映射的改进

Android 房间模型映射的改进,android,mapping,retrofit,retrofit2,android-room,Android,Mapping,Retrofit,Retrofit2,Android Room,我有一个问题可能对你们中的一些人来说很容易,但我真的解决不了 我有一个json格式如下: { "id" : "1641S818", "balance" : "100.20", "transactions" : [ { "id" : "item1", "price" : "1.50", "description" : "pen", "date" : "2018-0

我有一个问题可能对你们中的一些人来说很容易,但我真的解决不了

我有一个json格式如下:

{
    "id" : "1641S818",
    "balance" : "100.20",
    "transactions" : [
        {
            "id" : "item1",
            "price" : "1.50",
            "description" : "pen",
            "date" : "2018-05-14T14:19:00Z"
        },
        {
            "id" : "item1",
            "price" : "9.00",
            "description" : "book",
            "date" : "2018-05-14T08:19:00Z"
        }
    ]
}
我想第一次尝试安装一个带有改装+房间的应用程序,但我在构建模型时遇到了麻烦

我提出了这个数据类进行改造,它们工作得很好。这并不奇怪,因为我知道如何使用它

data class Account (
    val id : String,
    val balance : Double,
    val transactions : List<Transaction>
)

data class Transaction (
    val id : String,
    val price : Double,
    val description : String,
    val date : String
)

现在是我被卡住的地方。我找不到一个指南,一个例子,任何能说明在这种特殊情况下使用映射器(可能使用livedata或rx)在何处转换模型的东西,也就是说,在对象之间存在复杂的关系,而不仅仅是普通类。

您可以用这样的扩展函数定义单独的映射器文件

fun Transaction.toTransactionData() = TransactionData(...)
然后在API调用之后,可能在用例中,您可以使用此函数将API实体映射到DB实体,然后将结果传递给房间dao

UPD 1。
此外,您还可以为UI使用定义
transaction
实体。因此,在用例级别,您使用
RestTransaction
DbTransaction
进行操作,但将
Transaction
传递到UI,从其源代码中提取出来。

谢谢我的朋友。我将尝试实现这一点,并会让您知道。我仍然有点困惑,但我想这样做会为我澄清一些事情。有一个示例可能会有所帮助,但似乎我在github上找到的每个“游乐场”应用程序和每个google示例都只展示了最简单的情况。你可以查我的回购协议。它没有DB,但有单独的UI和REST实体。我忘了更新这个线程,但它非常有用,现在是我经常使用的标准方法。
fun Transaction.toTransactionData() = TransactionData(...)