Binding Adapter Kullanımı 🧲

Ömer Akkoyun
KoçSistem
Published in
2 min readFeb 19, 2024

Yeni bir konu ile herkese tekrardan merhaba 😊

Bugün sizlerle binding adapter nedir ve neden kullanmalıyız, bunlara değineceğim. (Not: Eğer data binding konusunu bilmiyorsanız öncelikle ona bakmanızı öneririm.)

Haydi başlayalım.

Binding Adapter Nedir?

Binding Adapter, Android Jetpack’in bir parçası olan Data Binding kütüphanesiyle birlikte kullanılan bir özelliktir. Bu özellik, XML dosyalarındaki kullanıcı arayüzü elemanlarını, ViewModel veya model sınıflarıyla veri bağlama işlemlerini yönetmeyi sağlar. Bu sayede veri bağlama işlemlerini daha modüler bir şekilde gerçekleştirebiliriz.

Önce gradle dosyamızdan databinding’i etkinleştirelim;

android {
...
dataBinding {
enabled = true
}
}

Şimdi örneklerle ilerleyelim.

Örnek Kullanım:

Bir Xml içindeki TextView elemanına bir modeldeki parametreyi setleyelim, bunun için önce Binding Adapter sınıfımızı oluşturup, setleme yapabilmemiz için ilgili kodları yazalım;

import androidx.databinding.BindingAdapter
import android.widget.TextView

@BindingAdapter("name")
fun setTextViewName(textView: TextView, name: String?) {
textView.text = name ?: "İsim Bulunamadı"
}

Binding Adapter sınıfından erişebileceğimiz “name” isimli metodu oluşturduk ve bunu kullanarak artık isim setlemelerini yapabiliriz.

Şimdi XML üzerinde nasıl setleme yapabileceğimize bakalım;

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<data>
<variable
name="viewModel"
type="com.example.ViewModel" />
</data>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/nameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:name="@{viewModel.userName}" />

</LinearLayout>
</layout>

“app:name” ile viewmodel üzerindeki veriyi textview’a setlemiş olduk.

Resim setlemelerini de aynı yöntemle yapabiliriz;

Binding Adapter’a ekleyelim;

@BindingAdapter("imageUrl")
fun loadImage(view: ImageView, url: String?) {
url?.let {
Glide.with(view.context)
.load(it)
.into(view)
}
}

Şimdi de xml üzerinde kullanalım;

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:imageUrl="@{viewModel.imageUrl}" />

Böylece Binding Adapter kullanarak metotlara istediğimiz kontrolleri ekleyebiliyoruz ve tek bir yerden yönetebiliyoruz😋

Sonuç:

Kotlin ile Binding Adapter kullanmak, TextView,ImageView vs. kullanıcı arayüzü elemanlarına veri bağlama işlemlerini daha kolay ve düzenli hale getirir. Bu özellik sayesinde, veri değişikliklerini tek bir yerde yönetebilir ve kodunuzu daha okunabilir hale getirebilirsiniz.

Kotlin ve Data Binding ile ilgili daha fazla bilgi için resmi dokümantasyona göz atabilirsiniz.

Umarım bu yazı, Kotlin ile Binding Adapter kullanımını anlamanıza yardımcı olmuştur. İyi kodlamalar 🤩

--

--