简体   繁体   English

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

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

I want to establish a relationship between a ProgressBar and a WebView Something like this in XML: 我想在XML中建立ProgressBarWebView之间的关系:

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

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

With this code I can create a BindingAdapter to do the wiring like this: 使用此代码,我可以创建一个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); 
}

This works, but it irks me that I have to call findViewById . 这有效,但让我觉得我必须调用findViewById Is there any way I can refactor the XML and the BindingAdapter to take a direct reference to the ProgressBar as input instead of the @IdRes int ? 有没有什么方法可以重构XML和BindingAdapter直接引用ProgressBar作为输入而不是@IdRes int

Instead of id, directly pass ProgressBar in your BindingAdapter 而不是id,直接在BindingAdapter传递ProgressBar

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

XML code : XML代码:

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android数据绑定BindingAdapter:“找不到设置器” - Android Data Binding BindingAdapter: “Cannot find the setter” 使用Android数据绑定时,如何访问BindingAdapter中的实例变量? - How do I access an instance variable inside a BindingAdapter when using Android Data Binding? Java Android 数据绑定:@Bindable 和@BindingAdapter 有什么区别 - Java Android Data Binding : what is the difference between @Bindable and @BindingAdapter 如何在数据绑定android中的BindingAdapter中将多个视图作为参数传递? - How to pass multiple views as parameters in BindingAdapter in Data binding android? 无法通过数据绑定(@BindingAdapter)加载图像:AAPT:错误:属性 - Can't load image by data binding (@BindingAdapter) : AAPT: error: attribute 尝试使用@BindingAdapter设置参数时出现数据绑定错误 - data binding error when I try set params with @BindingAdapter BindingAdapter自定义getter 2路数据绑定 - BindingAdapter custom getter 2 way data binding 与 LiveData 的数据绑定<drawable>使 BindingAdapter 上的值无效?</drawable> - Data binding with LiveData<Drawable> nullifies value on BindingAdapter? 我在 android studio 中遇到数据绑定问题 - i have a problem with data binding in android studio Android 中的 BindingAdapter - BindingAdapter in Android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM