我有一个来自自定义 View 定义行的自定义属性:
<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
从数据绑定(bind) API,我需要将它与 @
一起使用像这样签名:app:order="@{byValue}"
,不幸的是这不能编译。然后我尝试使用一个我在内部也使用的常量:
app:order="@{com.example.views.ExampleView.ORDER_BY_VALUE}"
,但这也不能编译。我可以使用 app:order="@{0}"
,确定这行得通,因为它是这样定义的,但是我使用 0
的原因并不直观那里。知道如何编写更具可读性的代码来解决此问题吗?
最佳答案
有必要为枚举值创建代码:
object Order {
const val BY_VALUE = 0
const val BY_KEY = 1
}
将包含这些枚举的类/对象导入您的 XML:<import type="com.example.Order" />
然后你可以引用它们:app:order="@{Order.INSTANCE.BY_KEY}"
关于android - 通过 Data-Binding API 设置一个众所周知的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233007/