Android View Binding — Kotlin
Merhaba, bu yazımda sizlere View Binding kullanımını küçük bir örnek ile göstermeye çalışacağım. View Binding kullanımı oldukça basit ve umarım bende sizlere bunu güzel bir şekilde aktarabilirim.
View Binding Nedir?
View Binding, tasarımı oluşturduğumuz XML kodları ile Kotlin kodlarımız arasında bir bağlantı oluşturur ve layout dosyamız içerisindeki bileşenlere direkt olarak erişebilmemize olanak sağlar.
Kurulum ve Kullanımı
View Binding’i kullanabilmek için öncelikle aktif etmemiz gerekmekte. Bunun için Gradle Scripts altındaki build.gradle(Module :app) içerisine aşağıdaki kodu ekliyoruz.
android{
...
buildFeatures{
viewBinding = true
}
}
Ardından sağ üstten Sync Now’a basıyoruz.
Şimdi sıra aktivitemizin tasarımı için XML dosyamızı düzenlemekte.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Medium!"
android:textColor="@color/black"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:text="Değiştir"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>
Tasarımımızda bir adet TextView ve bir adette Button bulunmakta. Button ile değişimleri tetikleyip TextView da bunları gözlemleyeceğiz.
XML dosyasını düzenlediğimize göre şimdi Kotlin dosyasını düzenleyelim. Amacımız butona bastığımız zaman TextView içerisini “Hello World!” ya da “Hello Medium!” olarak güncellemek.
package com.example.mediumviewbinding
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.mediumviewbinding.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.button.setOnClickListener {
if (binding.textView.text == "Hello Medium!")
binding.textView.text = "Hello World!"
else
binding.textView.text = "Hello Medium!"
}
}
}
Öncelikle bütün aktivite içerisinde kullanabilmek için globalde bir değişken oluşturuyoruz. Değişkenin türünü belirtiyoruz ve içeriğini sonradan tanımlayacağımız için başına lateinit ekliyoruz. Tür belirtiminde kullanılan ve Binding ile biten sınıf otomatik olarak oluşturulmaktadır. Bu dosyanın isimlendirilmesi XML dosyamızın adına göre otomatik olarak yapılmıştır.
ActivityMainBinding.inflate(layoutInflater) ile XML dosyamızdaki bileşenleri binding değişkeni içerisine aktarıyoruz. Bu sayede tek değişken içerisinden bütün bileşenleri kullanma imkanı elde ediyoruz. Herhangi bir bileşene ulaşmak için tek yapmamız gereken binding.[bileşen id] ifadesini kullanmak.
setContent(binding.root) ile Activity görünümü hazırlamış olduğumuz XML dosyasındaki görünüm olarak ayarlanır.
Bütün bileşenler oluşturduk ve ekranda gösterilmeye hazır. Son olarak butona basıldığında ekrandaki yazının değişmesi kaldı. Butona basıldığı anda değişim sağlanacağı için bu anı yakalamalıyız. Bunun için butonun setOnClickListener fonksiyonunu kullanıyoruz. Bu fonksiyon sayesinde butona her basıldığında ekrandaki yazı değişecek. İçerisindeki yazı “Hello Medium!” ise “Hello World!” olarak, aksi halde “Hello Medium!” olarak ayarlanacak.
Umarım View Binding kullanımını basit bir şekilde sizlere aktarabilmişimdir. İyi çalışmalar dilerim.
Proje kodları : Github