Тернарный оператор со строковыми литералами в библиотеке привязки данных 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}" />
Другие вопросы по тегам