Android 通过数据绑定API设置已知的属性值

Android 通过数据绑定API设置已知的属性值,android,android-databinding,android-attributes,android-binding-adapter,Android,Android Databinding,Android Attributes,Android Binding Adapter,我在自定义视图中定义了一个自定义属性,如下所示: <declare-styleable name="ExampleView"> <attr name="order"> <enum name="byValue" value="0" /> <enum name="byKey" value="1" /> </attr> <!-- and some more attributes -

我在自定义视图中定义了一个自定义属性,如下所示:

<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”
。但是,由于我想使用数据绑定API中的
BindingAdapter
,因此我需要将其与
@
符号一起使用,如:
app:order=“@{byValue}”
,不幸的是,这无法编译

然后我试着使用一个常量,我在内部也这样使用:
app:order=“@{com.example.views.ExampleView.order\u BY\u VALUE}”
,但这也不能编译。我可以只使用
app:order=“@{0}”
,当然这是可行的,因为它是这样定义的,但是我在那里使用
0
的原因并不直观


知道如何编写更可读的代码来解决此问题吗?

有必要为枚举值创建代码:

object Order {
    const val BY_VALUE = 0
    const val BY_KEY = 1
}
将包含这些枚举的类/对象导入XML:

<import type="com.example.Order" />

我想我也遇到了同样的问题,所以为了添加一些信息,我得到的错误日志基本上是这样的:“android数据绑定找不到setter”。而且只有当我想用带有{}的东西的时候。希望你能找到一个解决办法。我必须稍后再试一次。也许导入标签就是诀窍。我读了一些关于它的东西。@rekire你能找到解决这个问题的方法吗?哇,四年后,我对这个老问题发表了评论。很抱歉,我甚至记不起这个问题。我不知道这是否正确,但对于等待了这么久的答案,你会得到接受状态。
app:order="@{Order.INSTANCE.BY_KEY}"