小编Mic*_*ger的帖子

如何在Android布局中按值而不是名称设置枚举属性?

我有一个自定义视图持有另一个.层次:

MyOuterView
->MyInnerView
Run Code Online (Sandbox Code Playgroud)

MyInnerView 有一个枚举属性,如:

<attr name="myAttr" format="enum">
    <enum name="foo" value="0"/>
    <enum name="bar" value="1"/>
</attr>
Run Code Online (Sandbox Code Playgroud)

所以我可以在MyOuterViewXML中实例化组件,如:

<com.example.MyInnerView
....
app:myAttr="foo"/>
Run Code Online (Sandbox Code Playgroud)

当然哪个有效.这MyOuterView为定制本身提供了一个论据.根据这个论点,我想设置一个参数MyInnerView.

希望的行为是我可以使用数据绑定,如:

<com.example.MyInnerView
....
app:myAttr="@{data.getMyAttr()}"/>
Run Code Online (Sandbox Code Playgroud)

其中getMyAttr()的样子:

public int getMyAttr() {
    return myAttr; // returns 0 or 1
}
Run Code Online (Sandbox Code Playgroud)

结果是编译问题.

****/数据绑定错误****消息:在com.example.MyInnerView上找不到参数类型为int的属性'app:myAttr'的setter

所以显然我不能通过值设置枚举,而只能通过名称设置枚举.除了以MyInnerView编程方式创建之外的任何想法 请注意,我无法改变MyInnerView.

java enums android android-layout android-databinding

18
推荐指数
1
解决办法
1076
查看次数