微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以在Android上将视图作为数据绑定BindingAdapter的输入吗?

我想在 XML中建立ProgressBar和WebView之间的关系:

<ProgressBar
        android:id="@+id/progressBar"/>

    <WebView
        android:id="@+id/wvb_webView"
        app:attachedProgressBar="@{@id/progressBar}"/>

使用此代码,我可以创建一个BindingAdapter来进行如下连线:

@BindingAdapter({"app:attachedProgressBar"})
public static void setAttachedProgressBar(WebView webView,@IdRes int progressBarId) {        
        ProgressBar progBar = (ProgressBar) DataBindingUtil.getBinding(webView).getRoot().findViewById(progressBarId);
        wireStuff(webView,progBar); 
}

这有效,但让我觉得我必须调用findViewById.有没有什么方法可以重构XML和BindingAdapter直接引用ProgressBar作为输入而不是@IdRes int?

解决方法

而不是id,直接在BindingAdapter中传递ProgressBar

@BindingAdapter({"app:attachedProgressBar"})
public static void setAttachedProgressBar(WebView webView,ProgressBar progBar) {        
    wireStuff(webView,progBar); 
}

XML代码

<ProgressBar
    android:id="@+id/progressBar"/>

<WebView
    android:id="@+id/wvb_webView"
    app:attachedProgressBar="@{progressBar}"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐