@labotsky96

Как отслеживать изменения внутри ViewModel?

Добрый день. Разрабатываю приложение с использованием архитектуры MVVM. Есть фрагмент, в котором находится RecyclerView со списком пользователей. Сами пользователи хранятся в базе данных Room. Запрос к Room возвращает Livedata(List(User)). Во ViewModel я этот список получаю с помощью репозитория. В чем собственно суть вопроса. Перед тем как передать список в RecyclerView мне нужно его модифицировать, добавить некоторые данные необходимые для адаптера и передать уже не List(User), а List(ModifyUser). Как внутри ViewModel отследить, что Livedata(List(User)) изменился, и вызвать метод getModifyUser()? Судя по документации на developers.android я не могу подписываться на обновление объектов внутри ViewModel. Сейчас я обошел проблему таким образом: во фрагменте я подписался на Livedata(List(User)), и на MutableLiveData(List(ModifyUser)), которые находятся в ViewModel. когда происходит изменение LiveData(List(User)) я во фрагменте вызываю метод из ViewModel, который обрабатывает список User и вставляет его в MutableLiveData(List(ModifyUser)). И вот этот список я уже и вывожу. Мне кажется данный способ похож на какой то костыль. Наверняка есть более элегантный способ отследить изменения LiveData внутри ViewModel
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
Можно использовать преобразование одного LiveData в другой с помощью https://developer.android.com/reference/android/ar...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы