从代码调用数据绑定适配器

时间:2016-07-12 20:43:51

标签: android android-webview android-databinding

我正在使用数据绑定开发Android应用,我必须将网址加载到WebView。我写了一个自定义BindingAdapter,除了WebView无法加载网址的情况外,一切都很完美。对于这种情况,我有一个按钮,应该再次调用BindingAdapter,但我没有找到一种方法来调用它而不从代码中初始化WebView。所以,我的问题是,是否有可能实现这一点或是否有其他方式? 您可以在下面找到WebViewBindingAdapter

<WebView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:loadUrl="@{webViewModel.webViewUrl}"
      app:loadedCallback="@{webViewModel.loadedCallback}"
      android:visibility="@{webViewModel.error == null &amp;&amp; !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);
  }

0 个答案:

没有答案