【问题标题】:How to use the model/POJO with android databinding, room and retrofit?如何将模型/POJO 与 android 数据绑定、房间和改造一起使用?
【发布时间】:2019-12-16 18:45:42
【问题描述】:

我正在研究 android 中的 Room 和 Databinding,我向我的朋友展示了我在那之前所做的事情,然后他说我的模型/POJO 类没有遵循最佳实践,因为我不应该使用相同的模型/POJO 执行请求(改造),保存在数据库(房间)中并进行数据绑定。

我的模特/POJO:

@Entity(tableName = "posts")
class Post : BaseObservable() {

@ColumnInfo(name = "idPost")
@PrimaryKey
var id: Int = 0

var userId: Int = 0

@Bindable
var message: String = ""
    set(value) {
        field = value
        notifyPropertyChanged(BR.message)
    }

@SerializedName("created_in")
@Bindable
var createdIn: Long = 0
    set(value) {
        field = value
        notifyPropertyChanged(BR.createdIn)
    }

@Bindable
var image: String? = ""
    set(value) {
        field = value
        notifyPropertyChanged(BR.image)
    }

}

当我发出请求并保存在数据库中时

fun getPostsFromAPI(onSuccess: (posts: MutableList<Post>) -> Unit, onError: (error: Throwable) -> Unit) {

    PostsNetwork.requestPosts(
            { posts ->

                launch {
                    withContext(Dispatchers.IO) {
                        MyApplication.database.postsDAO().insertPosts(posts)
                    }
                    onSuccess(posts)

                }
            },
            {
                onError(it)
            }
    )

}

对于数据绑定,我尝试使用两种方式的数据绑定。

每个事物(数据绑定、改造、房间)是否必须有 3 个实体?如果是这样,最好的方法是什么?

【问题讨论】:

    标签: android data-binding retrofit android-room android-databinding


    【解决方案1】:

    我将首先在您的域包中创建一个域模型 pojo,例如在各个包中的 Clean 架构和用于改造、房间等的数据传输对象模型中。 然后要转换对象,请使用 Mapper 类,该类具有接受一个对象并转换为另一个对象的函数。

    【讨论】:

      猜你喜欢
      • 2019-11-12
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2019-08-22
      • 1970-01-01
      • 2020-01-11
      相关资源
      最近更新 更多