Установить через API привязки данных общеизвестное значение атрибута
У меня есть пользовательский атрибут из пользовательского представления определенной строки это:
<declare-styleable name="ExampleView">
<attr name="order">
<enum name="byValue" value="0" />
<enum name="byKey" value="1" />
</attr>
<!-- and some more attributes -->
</declare-styleable>
Android Studio обнаруживает это и предлагает мне автозаполнение, и это здорово. Так что атрибут xml будет выглядеть app:order="byValue"
, Однако, так как я хочу использовать BindingAdapter
из API привязки данных, мне нужно использовать его с @
знак, как это: app:order="@{byValue}"
К сожалению, это не компилируется.
Затем я попытался использовать константу, которую тоже использую внутри: app:order="@{com.example.views.ExampleView.ORDER_BY_VALUE}"
, но это тоже не компилируется. Я могу просто использовать app:order="@{0}"
Конечно, это работает, потому что это определено так, но это не интуитивно понятно, почему я использую 0
там.
Любая идея, как я могу написать более читаемый код для решения этой проблемы?
1 ответ
Необходимо создать код для значений enum:
object Order {
const val BY_VALUE = 0
const val BY_KEY = 1
}
Импортируйте класс/объект, содержащий эти перечисления, в свой XML:
<import type="com.example.Order" />
Затем вы можете сослаться на них:
app:order="@{Order.INSTANCE.BY_KEY}"