如何将 model/POJO 与 android 数据绑定、空间和改造一起使用?
How to use the model/POJO with android databinding, room and retrofit?
我在 android 学习 Room 和数据绑定,我向我的朋友展示了我在那一刻之前所做的事情,然后他说我的 model/POJO class 没有跟进最佳实践,因为我不应该使用相同的 model/POJO 来执行请求(改造)、保存在数据库(房间)中并进行数据绑定。
我的model/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 个实体吗?如果是这样,最好的方法是什么?
我会首先在您的域包中创建一个域模型 pojo,就像在各自包中的 Clean 体系结构和用于改造、房间等的数据传输对象模型中一样。
然后要转换对象,请使用 Mapper 类 以及接受一个对象并转换为另一个对象的函数。
我在 android 学习 Room 和数据绑定,我向我的朋友展示了我在那一刻之前所做的事情,然后他说我的 model/POJO class 没有跟进最佳实践,因为我不应该使用相同的 model/POJO 来执行请求(改造)、保存在数据库(房间)中并进行数据绑定。
我的model/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 个实体吗?如果是这样,最好的方法是什么?
我会首先在您的域包中创建一个域模型 pojo,就像在各自包中的 Clean 体系结构和用于改造、房间等的数据传输对象模型中一样。 然后要转换对象,请使用 Mapper 类 以及接受一个对象并转换为另一个对象的函数。