我可以在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}"/>

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...