如何使用数据绑定使用mvvm模式

Sam*_*Sam 1 android android-mvvm

我正在开发一个登录表单的应用程序.我对模式有点困惑,因为我不明白我将如何打开新活动,因为我的登录成功.按照我的理解,当我点击提交时按钮viewmodel中的一个方法,它将通过身份验证获得调用,在我成功登录后,我不知道如何将其导航到活动文件,以便我可以调用新活动.

Chi*_*oni 5

拇指规则:

android.*中没有包应该位于ViewModel中.您可以忽略ViewModel的包导入

此外,您也可以使用普通的ViewModel.

如何进行?

让我们简单一点.假设您正在进行登录页面.

让我们看看ViewModel本身的内容:

  • 具有双向绑定的电子邮件和密码字段
  • 表单验证逻辑
  • 按钮单击事件
  • Api电话

所有这些都在你的ViewModel中.

现在,您的活动需要对您的Api通话结果做出反应.因此,让ViewModel有一个单独的LiveData,其中T是来自Api Call的响应类型.

例如:

val loginApiStatus = MutableLiveData<LoginResponse>()
Run Code Online (Sandbox Code Playgroud)

然后,让您的Activity观察此LiveData.应该在onStart()Activity的方法中观察到.我会告诉你为什么要观察onStart().

viewModel.loginApiStatus.observe(this, Observer{ loginResponse->
    // respond accordingly
})
Run Code Online (Sandbox Code Playgroud)

现在,一旦您收到Api的回复,只需将ViewModel中的LiveData更新为:

loginApiStatus.value = loginResponse // Login Api Response

使用此结构,您可以完全控制处理Api响应.即使您的活动进入后台,在启动Api呼叫后,您仍然可以了解该Api呼叫发生的情况.现在,当您再次从后台返回登录屏幕时,您再次开始观察LiveData(因为我们正在观察onStart()前面所述的状态LiveData ),您将得到状态以作出反应.

当您开始在ViewModel本身中存储View/Fragment/Activity的状态时,生活变得容易多了.