Android MVVM Livedata最佳做法

时间:2018-11-24 11:59:59

标签: android architecture viewmodel android-livedata

我正在体验Google的新架构组件,即LiveData和ViewModel。通过组合这两个API,我们可以使视图模型以响应方式侦听和更新数据。

我的问题是,如何在ViewModel中更具体地表示数据,如下所示,在将数据分解为单独的字段之间,哪种方法更好

class UserViewMode : ViewModel() {
    var name = MutableLiveData<String>
    vat lastName = MutableLiveData<String>
}

或者通过将数据封装在同时包含名称和姓氏的数据持有人/模型类中,并使视图模型在LiveData观察器中观察此模型类,如下所示:

class UserViewMode : ViewModel() {
    var user = MutableLiveData<User>
}

谢谢。

2 个答案:

答案 0 :(得分:1)

第二种方法更好。

class UserViewModel : ViewModel() {
    var user = MutableLiveData<User>
}

因为将数据封装在模型(用户)对象内比将所有数据分开要好。 我看到的主要优点是 1.清洁代码和体系结构。 2.模型对象可以在其他组件之间使用/传递,例如GSON(将数据解析为模型对象),Room数据库。

如果有多个用户对象,并且需要在RecyclerView中显示它们,则必须将数据封装到一个对象中。否则,代码将变成一团糟,有多个列表。

答案 1 :(得分:1)

我认为这仅取决于如何获取数据,并且应该考虑字段是否单独更改?

例如,如果您像这样:

  • User,因此无需将其分为多个字段
  • 另一方面,如果您要分别更改namelastName,则应该有两个字段。

做到有意义。