我有一个自定义视图持有另一个.层次:
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.