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

时间:2016-11-03 11:30:35

标签: android data-binding android-databinding

我希望在XML中建立destroyProgressBar之间的关系:

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); } 。有没有什么方法可以重构XML和BindingAdapter直接引用findViewById作为输入而不是ProgressBar

1 个答案:

答案 0 :(得分:8)

而不是ID,直接在ProgressBar

中传递BindingAdapter
@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}"/>