MVVM: сложный вид / ViewModel -> несколько объектов LiveData? - PullRequest
0 голосов
/ 07 ноября 2018

Большинство примеров MVVM имеют дело с очень простыми пользовательскими интерфейсами.

Но допустим, у меня есть действие с множеством просмотров, которое нужно обновить (т. Е. Много данных)

Когда я читаю в других местах, несколько объектов ViewModel - плохой шаблон.

Итак, на мой взгляд, есть два решения для этого:

  1. Создайте один объект (и один LiveData для него), который обернет все другие объекты данных.
    Но есть проблема с этим - каждый объект данных, который обновляется, будет вызывать обновление всего пользовательского интерфейса.

  2. Создание нескольких объектов (и нескольких объектов LiveData для него).
    Это означает, что мне нужно наблюдать за каждым объектом LiveData. Есть ли проблема с этим шаблоном?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018
  1. Создать ViewModel с для дискретных типов информации.

Вы можете, например, иметь UserViewModel, который имеет дело со всеми состояниями относительно User. Это означает, что вы можете использовать тот же ViewModel в другом контексте, не извлекая данные, которые могут не понадобиться (как если бы у вас был один Бог ViewModel).

  1. Создайте столько LiveData объектов, сколько вам нужно для моделирования вашего вида.

Лучше, если это возможно, уплотнять данные в логические объекты. Только для того, чтобы все было в порядке.

Если у вас есть User, вы должны использовать его для LiveData вместо LiveData для адреса электронной почты, отображаемого имени, возраста и т. Д. Это значительно упростит привязки данных. , Старайтесь, чтобы все было логически сгруппировано.

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

Первый пункт, который вы упомянули: Да, это не оптимальный шаблон, но если у вас есть небольшие данные, то разделение LiveDatas - это больше работы для меньшего выигрыша

Второй пункт, который вы упомянули: Да, это более оптимально, вы можете иметь объект LiveData для каждого просмотра, который вы хотите обновить, и наблюдать их все из вашей деятельности или фрагмента. В этом шаблоне нет проблем.

О Mutilple ViewModels: Несколько шаблонов ViewModels в одной Activty / Fragment также являются опцией, если в одной ViewModel происходит слишком много вещей (объектов LiveData или функций). Это только рекомендуется сделать ViewModels светлее. Так что используйте это, только если у вас большой класс viewModel

...