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

Can I have a View as input to a data binding BindingAdapter on Android?

我想在 ProgressBarWebView 之间建立关系 XML:

    <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 ?

在你的 BindingAdapter

中直接传递 ProgressBar 而不是 id
@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}"/>