我正在体验Google的新架构组件,即LiveData和ViewModel。通过组合这两个API,我们可以使视图模型以响应方式侦听和更新数据。
我的问题是,如何在ViewModel中更具体地表示数据,如下所示,在将数据分解为单独的字段之间,哪种方法更好
class UserViewMode : ViewModel() {
var name = MutableLiveData<String>
vat lastName = MutableLiveData<String>
}
或者通过将数据封装在同时包含名称和姓氏的数据持有人/模型类中,并使视图模型在LiveData观察器中观察此模型类,如下所示:
class UserViewMode : ViewModel() {
var user = MutableLiveData<User>
}
谢谢。
答案 0 :(得分:1)
第二种方法更好。
class UserViewModel : ViewModel() {
var user = MutableLiveData<User>
}
因为将数据封装在模型(用户)对象内比将所有数据分开要好。 我看到的主要优点是 1.清洁代码和体系结构。 2.模型对象可以在其他组件之间使用/传递,例如GSON(将数据解析为模型对象),Room数据库。
如果有多个用户对象,并且需要在RecyclerView中显示它们,则必须将数据封装到一个对象中。否则,代码将变成一团糟,有多个列表。
答案 1 :(得分:1)
我认为这仅取决于如何获取数据,并且应该考虑字段是否单独更改?
例如,如果您像这样:
User
,因此无需将其分为多个字段name
和lastName
,则应该有两个字段。做到有意义。