我开始学习 Kotlin 来开发 Android 应用程序,对于我的第一个项目,我必须使用 MVVM 作为模式来将表示层与逻辑分离。我发现的所有关于 MVVM 的文章都使用 DataBinding 库将模型的数据直接绑定到 xml 视图。我在 Java 中使用过 DataBinding,但我不喜欢它,因为当绑定错误时很难发现错误。我的问题是是否有另一种方法可以在不使用 DataBinding 的情况下使用 MVVM?
就是这样。只是抽象的例子:想象一下ViewModel:
class SomeViewModel : ViewModel() {
private lateinit var roadmap: RoleScreenRoadmap
private lateinit var uiScope: CoroutineScope
private val _nameRequired = MutableLiveData<Boolean>()
private val _userName = MutableLiveData<String>()
val nameRequired: LiveData<Boolean>
get() = _nameRequired
val userName: LiveData<String>
get() = _userName
...
}
Run Code Online (Sandbox Code Playgroud)
现在Activity:
class AbstractActivity : AppCompatActivity() {
private lateinit var viewModel: RoleScreenViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_some)
initializeDependencies()
performBindings()
}
private fun initializeDependencies() {
viewModel = ViewModelProviders.of(this).get(AbstractViewModel::class.java)
}
private fun performBindings() {
val lifecycle = ::getLifecycle
viewModel.nameRequired.observe(lifecycle) { nameRequired: Boolean? ->
if (nameRequired!!) {
showNameInputWindow()
}
}
viewModel.userName.observe(lifecycle, ::setTitle)
}
...
}
Run Code Online (Sandbox Code Playgroud)
您只需在 Android 生命周期组件初始化期间订阅即可,无需数据绑定。
| 归档时间: |
|
| 查看次数: |
1327 次 |
| 最近记录: |