I am trying to implement 2 way databinding for WebView and Progressbar.
Initially ProgressBar will continue to appear and as soon as webview finishes loading , progress bar should be GONE.
But I am not able to create that binding
I have created Binding adapter for webview to load url and also set WebViewClient to check page loading is finished but cannot update the visibility of progressbar
////////////// Post
@BindingAdapter({"app:webUrl"})
public void configureWebView(WebView iWebView, String iUrl) {
iWebView.getSettings().setJavaScriptEnabled(true);
iWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// code to set visibility of progress bar
}
});
iWebView.loadUrl(iUrl);
}
//////////////////// Layout
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="newsUrl"
type="com.example.bindingdemo.data.model.Post" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/news_web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:webUrl="@{newsUrl.url}" />
<ProgressBar
android:id="@+id/news_prog_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{**<WhatConditionToWrite>** ? View.GONE: View.Visible}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</layout>