android - 我可以将 View 作为 Android 上数据绑定(bind) BindingAdapter 的输入吗?

标签 android data-binding android-databinding

我想在 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 吗?

最佳答案

代替 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 - 我可以将 View 作为 Android 上数据绑定(bind) BindingAdapter 的输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400403/

相关文章:

android - 如何找出ROM提供商是谁?

java - 将 JSON 子对象属性绑定(bind)到 Jackson 中的 Java 对象字段

java - 使用动态添加的元素进行数据绑定(bind)

javascript - 三星互联网浏览器使用 html5 流上传 - 相机卡住

javascript - ionic 内容滚动被禁用

android - Google Tag Manager Android - 不支持 JSONArrays

android - 如何使用BindingAdapter和android Mvvm在edittext中显示日期并通过datepicker更新日期

android - 无法使用 Android Studio 3.0 + DataBinding + Kotlin 构建项目

WPF:将所有选项列表和选定选项列表绑定(bind)到带有选择复选框的列表框

java - 在数据绑定(bind)中将另一个 View 作为参数传递