我可以将视图作为 Android 上数据绑定 BindingAdapter 的输入吗?
Can I have a View as input to a data binding BindingAdapter on Android?
我想在 ProgressBar
和 WebView
之间建立关系 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}"/>
我想在 ProgressBar
和 WebView
之间建立关系 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}"/>