gpt4 book ai didi

没有数据绑定(bind)的 MVVM

转载 作者:行者123 更新时间:2023-12-01 01:43:39 26 4
gpt4 key购买 nike

我开始学习 Kotlin 来开发 Android 应用程序,对于我的第一个项目,我必须使用 MVVM 作为模式来将表示层与逻辑分开。我发现的所有关于 MVVM 的文章都使用 DataBinding 库将模型的数据直接绑定(bind)到 xml View 。我在 Java 中使用了一些 DataBinding,但我不喜欢它,因为当绑定(bind)错误时很难找到错误。我的问题是是否有另一种方法可以在没有 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

...
}

现在 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)
}

...
}

您可以在 android 的生命周期组件初始化期间订阅,并且不需要数据绑定(bind)。

关于没有数据绑定(bind)的 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com