У меня есть один пользовательский вид с другим. Иерархия:
MyOuterView
->MyInnerView
MyInnerView
имеет атрибут enum, например:
<attr name="myAttr" format="enum">
<enum name="foo" value="0"/>
<enum name="bar" value="1"/>
</attr>
Поэтому я могу создать экземпляр компонента в MyOuterView
XML, например:
<com.example.MyInnerView
....
app:myAttr="foo"/>
Что, конечно, работает. MyOuterView
предлагает аргумент для самой настройки. Основываясь на этом аргументе, я хочу установить аргумент MyInnerView
.
Желаемое поведение заключается в том, что я могу работать с Data Binding, например:
<com.example.MyInnerView
....
app:myAttr="@{data.getMyAttr()}"/>
где getMyAttr()
выглядит так:
public int getMyAttr() {
return myAttr; // returns 0 or 1
}
Результатом является компиляция.
****/ошибка привязки данных **** msg: Не удается найти установщик для атрибута 'app: myAttr' с типом параметра int на com.example.MyInnerView
Поэтому, очевидно, я не могу установить перечисление по значению, но только по имени. Любая идея, помимо создания MyInnerView
программно? Обратите внимание, что я не могу изменить MyInnerView
.