Уведомление об активности из ViewModel - PullRequest
0 голосов
/ 25 января 2020

Я новичок в MVVM android, я хочу сделать простую форму входа в систему с 2 полями ввода адреса электронной почты и пароля, 1 кнопкой входа в систему и 1 индикатором выполнения. Я использую viewmodel для перехвата значений email / пароля из XML, используя привязку и привязку onclick, а также для вызова функции onclick в viewmodel. Так что в общем случае viewmodel теперь слушает все в XML.

Мой вопрос: я хочу показать индикатор выполнения во время входа в систему и, таким образом, хочу уведомить класс активности из viewmodel, что «эй, пользователь только что нажал на это Кнопка входа в систему, показать индикатор выполнения, в котором идет процесс входа в систему »или« эй, теперь перейдите к панели мониторинга после завершения входа »или« эй, у нас ошибка, показать ошибку alerttdialog ».

Я могу использовать интерфейс, чтобы обернуть действие и передать его в viewmodel, а затем вызвать его методы, но я не хочу использовать этот подход, поскольку я считаю, что это не MVVM. Должен ли я создать переменную Status в viewmodel, а затем наблюдать за ней по активности?

Так в чем же здесь решение?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Вы можете использовать Live data в вашей модели представления. Пример кода проверки для этого.

var btnClicked:MutableLiveData<Boolean> = MutableLivedata<Boolean>()

В вашей функции клика используйте это

fun onClick(){
  btnClicked.value = true
}

Затем используйте этот код в действии, чтобы показать индикатор выполнения.

viewModel.btnClicked.observe(this, Observer {
        showProgressbar();//You funtion to show the progress bar
    })
0 голосов
/ 25 января 2020

Вы можете достичь этого с помощью LiveData. Создайте переменную живых данных, значение которой будет обновляться методами viewmodel со статусом входа в систему, и класс активности будет наблюдать эту переменную живых данных для обновлений статуса.

...