Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
November 26, 2021 10:32 pm GMT

2 Ways to Implement Binding Adapters

One way is using function parameter and another way is using extension function.

There could be more than 2 ways to implement binding adapters, but this is what I know. Let's look at what binding adapters are first.

What is Binding Adapters?

Binding adapter is used for implementing custom attribute in your layout file. For example, instead of using the defaultandroid:text attribute, you want to customize it by creating a new attribute app:customText.

Default Attribute - android:text

<TextView    android:id="@+id/textView"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="Hello World!"/>

Custom Attribute - app:customText

<TextView    android:id="@+id/textView"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    app:customText="@{`Hello World!`}"/>

To implement custom attribute, we use binding adapters. Binding adapter is part of the data binding library. So you need to include the following in your build.gradle module file.

android {    ...    buildFeatures {        dataBinding true    }}

To implement a binding adapter, you need to annotate the function with @BindingAdapter("attribute name here") together with View class that you want to bind to. It can be done by passing the View class (e.g. TextView) as a function parameter or using the extension function.

1. Pass View as Function Parameter

I am not sure if this is a standard way (or maybe a recommended way?) but this is in the official documentation. What I learned initially is the second method below (i.e. using the extension function)

@BindingAdapter("customText")fun setCustomText(view:TextView, item: String) {    view.text = "My Custom String: $item"}

2. Use View Extension Function

@BindingAdapter("customText")fun TextView.setCustomText(item: String) {    text = "My Custom String: $item"}

Because this is an extension function, you can call it in code directly like this.

binding.textView.setCustomText("Hello World!")

You can do that with the first method too, but the second method is more readable.

Personally

I prefer the second method, use the extension function to implement binding adapter. It reflects the actual intention, which is to extend theTextView functionality.

Originally published at https://vtsen.hashnode.dev.


Original Link: https://dev.to/vtsen/2-ways-to-implement-binding-adapters-4omc

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To