gpt4 book ai didi

android - MVVM+Kotlin+Databinding最佳实践

转载 作者:搜寻专家 更新时间:2023-11-01 09:26:08 28 4
gpt4 key购买 nike

我正在 MVVM+Kotlin+Databinding 上构建一个应用程序,我遇到了这种情况。我有 LoginFragment,它有一个电话号码编辑文本和一个按钮,现在我需要检查用户单击按钮时电话号码是否为空。通常我会在我的 fragment 中使用这段代码来做到这一点。

if(!binding!!.phone.text.isEmpty()) {
//do something
}

但根据experts我的 View 不应该对业务逻辑一无所知,因此我需要在我的 viewModel 中进行此检查。那么实现这一目标的最佳方法应该是什么?

最佳答案

以下是实现这一目标的投注实践(从我的角度来看):

在您的布局中,将文本观察器和文本添加到您的 EditText

android:text="@{view_model.phone}"
app:addTextChangedListener="@{view_model.phoneWatcher}"

点击按钮的方法

android:onClick="@{() -> view_model.save()}"

ViewModel 中,您将拥有可观察的文本和观察者

val phone = ObservableField<String?>()

val phoneWatcher = object : TextWatcherAdapter() {
override fun afterTextChanged(s: Editable?) {
phone.set(s?.toString())
}
}

现在您可以在 ViewModel 中进行检查

fun save() {
if (phone.get()?.isNotEmpty == true) {
// TODO: do something
}
}

另请注意,最好避免在 Kotlin 中执行类似 binding!!.phone 的操作。如果您使用 !! 使一个可能的可为 null 的对象看起来像是不可为 null 的(即使您 100% 确定它是)——您做错了什么。

关于android - MVVM+Kotlin+Databinding最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50499675/

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