Тернарный оператор со строковыми литералами в библиотеке привязки данных Android
У меня есть EditText
и я хочу установить его inputType
в зависимости от того, если Parameter
является числовым или нет:
interface Parameter {
boolean isNumeric();
}
У меня есть это:
<EditText
...
android:inputType="@{parameter.isNumeric()? number : text}"/>
Но при синтаксическом анализе XML возникает ошибка. Я пробовал оборачивать number
а также text
значения в одинарных и двойных (экранированных) кавычках.
Как я могу решить это?
1 ответ
Решение
number
а также text
значения будут считаться переменными в контексте Java. Вы должны убедиться, что установили соответствующее значение Java. Сначала вы должны импортировать InputType
в вашем <data>
блок. Затем используйте соответствующие целочисленные значения.
<EditText
android:inputType="@{parameter.isNumeric() ? InputType.TYPE_CLASS_NUMBER : InputType.TYPE_CLASS_TEXT}" />