我的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变量的任何内容(空字符串),该变量是在创建MutableLiveData<Boolean>类对象时(在ViewModel块内部)初始化的init{}
这是我收到的错误:
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:text="@{viewModel.isAddCase ? ``: `` + viewModel.currentStudent.age}"
您也可以使用String.valueOf代替``
android:text="@{viewModel.isAddCase ? ``: String.valueOf(viewModel.currentStudent.age)}"

08-04 18:01