【发布时间】:2020-10-29 17:42:59
【问题描述】:
我的EditText是这样的:
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="@={viewModel.isAddCase? ``: `` + viewModel.currentStudent.age}" //problem here
android:inputType="number" />
我希望EditText 不显示基于isAddCase 变量的任何内容(空字符串),这是在创建ViewModel 类对象时(在init{} 块内)初始化的MutableLiveData<Boolean>。
这是我得到的错误:
The expression '((viewModelIsAddCaseGetValue) ? ("") : (javaLangStringViewModelCurrentStudentAge))' cannot be inverted, so it cannot be used in a two-way binding
Details: The condition of a ternary operator must be constant: android.databinding.tool.writer.KCode@37a418c7
更新
即使这不起作用,也会显示相同的错误:
android:text="@={viewModel.currentStudent.age == 0? ``: `` + viewModel.currentStudent.age}"
我猜三元运算不能很好地与双向DataBinding 一起工作。
【问题讨论】:
标签: android kotlin android-room android-databinding android-viewmodel