Search code examples
androidkotlinmvvmdata-bindingwebview

i want android webview data binding in mvvm pattern


i want android webview data binding in mvvm pattern

my code (view model)

  companion object {
        @JvmStatic
        @BindingAdapter("loadUrl")
        fun WebView.setUrl(url: String) {
            this.loadUrl(url)
        }
    }

xml

<WebView
                android:id="@+id/webViewTerm"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:loadUrl="@{signUpViewModel.url}"
                />

The binding was successful,

but I want to add an extra header , I don't know how to put the data I want in that object bound to the companion object

Could you give me a little hint for me?


Solution

  • You can pass extra headers to your WebView tag. See the example below.

    In your XML, add headers to your XML tag:

    <WebView
        android:id="@+id/webViewTerm"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:loadUrl="@{signUpViewModel.url}"
        app:headers="@{signUpViewModel.headers}"
        />
    

    In your code:

     @JvmStatic
     @BindingAdapter(value = ["app:URL","app:headers"], requireAll = true)
     fun loadUrl(view: WebView, url:String?, extraHeaders:Map<String, String> )
      {
         view.loadUrl(url,extraHeaders)
      }