Android MVVM Livedata лучшие практики - PullRequest
0 голосов
/ 24 ноября 2018

Я испытываю новые архитектурные компоненты от 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 голосов
/ 02 декабря 2018

Я думаю, что это зависит только от того, как вы получаете данные, и вы должны подумать, изменяются ли поля отдельно или нет?

Например, если вы получаете это как:

  • User, тогда нет необходимости разделять его на поля
  • С другой стороны, если вы изменяете name отдельно от lastName, у вас должно быть два поля для этого.

Делай, как это имеет смысл.

0 голосов
/ 24 ноября 2018

Второй подход лучше.

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

Поскольку инкапсуляция данных внутри объекта модели (пользователя) лучше, чем хранить все данные отдельно.Основные преимущества, которые я вижу: 1. Чистый код и архитектура.2. Объект модели может использоваться / передаваться между другими компонентами, такими как GSON (для анализа данных в объект модели), база данных Room.

Если имеется несколько объектов User, и они должны быть представлены в RecyclerView, тогда у вас естьинкапсулировать данные в один объект.В противном случае код становится беспорядком с несколькими списками.

...