android-databinding - 使用双向数据绑定和 Livedata 时视图启用不起作用
问题描述
我想根据是否选中 CheckBox 启用 EditText 字段:
该应用程序按预期工作,直到我开始使用 LiveData 启用/禁用复选框(禁用复选框不再将 EditText 设置为启用 = false)。结果复选框未选中,EditText 字段仍启用:
视图模型代码:
class FirestoreViewModel : ViewModel() {
var firebaseRepository = FirestoreRepository()
val userItem = firebaseRepository.getUserItem() as MutableLiveData<UserItem>}
Activity 代码(绑定布局和视图模型):
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//to show problem: binding = FragmentLivedataBinding.inflate(layoutInflater)
val binding = FragmentNoLivedataBinding.inflate(layoutInflater)
binding.lifecycleOwner = this
val model: FirestoreViewModel by viewModels()
binding.viewmodel = model
setContentView(binding.root)
}
layout.xml 文件使用 LiveData 来设置 CheckBox (FragmentLivedata):
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:checked="@={viewmodel.userItem.player1Active}"/>
<EditText
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textPersonName"
android:text="@={viewmodel.userItem.player1Name}"
android:enabled="@{viewmodel.userItem.player1Active}"
tools:text="User Name" />
没有 LiveData (FragmentNoLivedata):
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:checked="true"/>
<EditText
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="textPersonName"
android:text="@={viewmodel.userItem.player1Name}"
android:enabled="@{checkBox1.checked}"
tools:text="User Name" />
请帮我找到这个问题的正确解决方案。
解决方案
推荐阅读
- python - While 循环仅循环一小部分代码,而不是实际在 while 循环中的所有代码
- angular - Openseadragon mouse:down & mouse:up 不工作,但在设计启用后仍然可以工作
- python-3.x - 所有级别的自定义格式化程序不再适用于 Python3
- c++ - int main = 0, 已编译但崩溃
- angular - 如何从角度中的特定角色中删除用户?
- sql-server - 使用 SQL-Server 在 API 平台项目中进行分页
- firebase - Phonegap/cordova - window.FirebasePlugin 未定义
- python - Scrapy 不会爬
- javascript - 表单元素数组提取id
- pandas - 如何读取 CSV、分隔符、分隔符错误