我正在使用数据绑定开发Android应用,我必须将网址加载到WebView
。我写了一个自定义BindingAdapter
,除了WebView
无法加载网址的情况外,一切都很完美。对于这种情况,我有一个按钮,应该再次调用BindingAdapter
,但我没有找到一种方法来调用它而不从代码中初始化WebView
。所以,我的问题是,是否有可能实现这一点或是否有其他方式?
您可以在下面找到WebView
和BindingAdapter
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:loadUrl="@{webViewModel.webViewUrl}"
app:loadedCallback="@{webViewModel.loadedCallback}"
android:visibility="@{webViewModel.error == null && !webViewModel.loading ? View.VISIBLE : View.INVISIBLE}"/>
绑定适配器:
@BindingAdapter({"loadUrl", "loadedCallback"})
public static void loadUrl(WebView webView, String url, Action<String> loadedCallback) {
final String[] error = {null};
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
loadedCallback.call(error[0]);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
error[0] = description;
}
});
webView.loadUrl(url);
}