gpt4 book ai didi

android - 如何使数据绑定(bind)与 xml 属性一起工作?

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

我正在设置我的 EdittextCheckBox 来连接我的 View 模型。我已经在我的 ViewModel 上设置了变量 isActivecurrentValue,我想将它们的值初始化为 xml,这样当用户到达 Fragment 时,当前值也设置为表单字段。

我已经尝试将 android:checked="@{viewModel.isActive}" 添加到 CheckBoxandroid:text="@{ viewModel.currentValue}"EditText,但是它没有产生任何结果。

现在,我的解决方法是通过 fragment 初始化表单字段值:

viewModel.isActive.observe(this, Observer {
it?.let {
binding.checkBox.isChecked = it
}
})
viewModel.currentValue.observe(this, Observer {
it?.let {
binding.editText.setText(it.toString())
}
})

这是我的代码:

ViewModel.kt

val isActive = Transformations.map(currentEntity) {
it.value?.isActive == 1
}

val currentValue = Transformations.map(currentEntity) {
it.value?.currentValue
}

private var currentEntity = MutableLiveData<Entity?>()
init {
initializeCurrentEntity()
}

private fun initializeCurrentEntity() {
uiScope.launch {
currentEntity.value = getCurrentEntityById(id)
}
}
layout.xml

<layout ...>
<data>
<variable name="viewModel"
type="com.example.app.ViewModel"/>
</data>
...
<com.google.android.material.textfield.TextInputLayout ... >
<com.google.android.material.textfield.TextInputEditText
...
android:text="@{viewModel.currentValue}"
...
/>
</com.google.android.material.textfield.TextInputLayout>
...
<CheckBox
...
android:checked="@{viewModel.isActive}" />
</layout>

我想要的结果是,当 viewModel 已经初始化了 currentEntity 并更新了 isActivecurrentValue,它也会反射(reflect)在 xml 中。我认为 currentValueisActive

目前的实际输出都是空的

最佳答案

我好像忘了给数据绑定(bind)设置LifecycleOwner。我已经在我的 Fragment 上用 binding.setLifecycleOwner(this) 修复了它。

关于android - 如何使数据绑定(bind)与 xml 属性一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067958/

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