【发布时间】: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