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}"