我在自定义控件中设置了自定义attrs,如下所示:
<declare-styleable name="MyControl" tools:ignore="ResourceName">
<attr name="ms_hide_arrow" format="boolean"/>
</declare-styleable>
然后,我的控件在我的应用程序xml布局中使用,这有效:
<MyControl
.................
app:ms_hide_arrow="false"
/>
但是如果我尝试使用数据绑定来提供价值,就像这样:
<MyControl
.................
app:ms_hide_arrow="@{user.hideArrow}"
/>
我收到错误消息:
错误:(183,34)找不到属性的setter &#39;应用程序:ms_hide_arrow&#39;参数类型为boolean on ...
我错过了什么?如果我使用标准的Android控件,例如标准微调器,我可以使用数据绑定设置其属性而没有任何问题。
我应该做些什么来使我的自定义控件能够与数据绑定一起使用吗?
[加入] 通过添加这样的setter来解决问题:
public void setMs_hide_arrow(boolean v)
{
hideArrow = v;
}
但是,当我尝试使用双向绑定时仍然存在问题,因此在xml中设置:
app:ms_hide_arrow="@={user.hideArrow}
&#34;
结束吸气:
public boolean getMs_hide_arrow()
{
return hideArrow ;
}
我收到有关遗失getter的错误消息:
错误:(171,9)无法找到属性的getter &#39;应用程序:ms_hide_arrow&#39;值类型为boolean on ...
Getter在那里,出了什么问题?
答案 0 :(得分:1)
例如在您的视图模型中创建像这样的bindingAdapter(您可以为所有的活页夹适配器创建一个类):
@BindingAdapter("msHideArrow")
public static void hideArrow(View View, boolean isVisible) {
if (isVisible) {
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.INVISIBLE);
}
}
并在您的Xml文件中:
<MyControl
.................
app:msHideArrow="@{user.hideArrow}"
/>