EğitimTeknoloji

Android ViewBinding Kullanımı

Android ViewBinding Kullanımı

Android uygulama geliştirirken, XML dosyalarında tasarımı oluştururuz ve bu tasarımı Kotlin veya Java kodlarıyla ilişkilendiririz. Bu ilişkilendirmeyi sağlayan birçok yöntem bulunmaktadır. Ancak, Kotlin’de ViewBinding kullanmak, XML dosyasındaki elemanlara erişmek için güvenli ve verimli bir yöntemdir. Bu makalede, Kotlin’de ViewBinding kullanarak XML elemanlarına nasıl erişileceğini adım adım göstereceğiz.

1. Proje Ayarları:

İlk olarak, projemize ViewBinding özelliğini eklememiz gerekiyor. Bunun için, app modülünün build.gradle dosyasına aşağıdaki kodu ekleyin:

android {

viewBinding {
enabled = true
}
}

2. XML Dosyası Oluşturma:

XML dosyasında tasarımı oluşturun. Örneğin, activity_main.xml dosyasında bir ImageView ve bir TextView elemanı olsun:

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”>

<ImageView
android:id=”@+id/myImageView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:src=”@drawable/my_image”
android:layout_centerInParent=”true”/>

<TextView
android:id=”@+id/myTextView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Hello, World!”
android:layout_below=”@id/myImageView”
android:layout_centerHorizontal=”true”/>

</RelativeLayout>

 

 

3. Activity Sınıfında ViewBinding Kullanımı:

Şimdi, bu XML dosyasındaki elemanlara erişmek için ViewBinding’i kullanacağız. Öncelikle, setContentView metodunu kullanarak XML dosyasını bağlayacağız ve ardından ViewBinding nesnesini oluşturacağız.

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.myapp.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)

// ImageView’e erişim:
val imageView = binding.myImageView

// TextView’e erişim:
val textView = binding.myTextView
}
}

Yukarıdaki kodda, ActivityMainBinding adında bir sınıf oluşturduk. Bu sınıf, XML dosyasındaki tüm elemanları içeren bir sınıftır. inflate metodunu kullanarak bu sınıfı oluşturuyoruz ve setContentView metoduna binding.root‘u geçirerek XML dosyasını bağlıyoruz. Artık binding nesnesi aracılığıyla XML dosyasındaki tüm elemanlara erişebiliriz.

4. ViewBinding’in Avantajları:

ViewBinding kullanmanın bazı avantajları şunlardır:

  • Null güvenliği: ViewBinding, XML dosyasındaki elemanları null olasılığı olmadan erişmenizi sağlar.
  • Daha az hata: R dosyası gibi ortak hata noktalarını azaltır ve hata ayıklamayı kolaylaştırır.
  • Performans artışı: ViewBinding, findViewById gibi yöntemlere kıyasla daha hızlıdır ve uygulama performansını artırır.
  • Daha okunabilir kod: XML dosyasındaki elemanları isimleriyle doğrudan erişme, kodun daha okunabilir olmasını sağlar.

5. Kullanım Örnekleri:

ViewBinding’i kullanarak çeşitli işlemler yapabilirsiniz:

  • Elemanlara erişim: Örneğin, metin veya resim ayarlamak için ImageView veya TextView’e erişebilirsiniz.
  • Olay dinleme: Butonlara tıklama gibi olayları dinlemek için ViewBinding kullanabilirsiniz.
  • Elemanları gizleme veya gösterme: Kullanıcının etkileşimine göre belirli elemanları görünmez veya görünür hale getirebilirsiniz.

Bu şekilde, Kotlin’de ViewBinding kullanarak XML dosyasındaki elemanlara güvenli ve verimli bir şekilde erişebiliriz. Bu yöntem, uygulamanın daha kolay bakımını sağlar ve hata olasılığını azaltır. Hem geliştirme sürecini hızlandırır hem de kodun daha okunabilir olmasını sağlar.

Son olarak ViewBinding’i kullandığımız bir örnek proje verip sizlerin kafasında olayı daha da perçinleyelim ..

Örneğimizde, bir ImageView ve bir TextView’e erişerek kullanıcı tarafından seçilen bir fotoğrafı ve metni göstereceğiz. Bu örnekte, ViewBinding’i kullanarak bu elemanlara erişeceğiz.

activity_main.xml:

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”>

<ImageView
android:id=”@+id/imageView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_centerInParent=”true”/>

<TextView
android:id=”@+id/textView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Select an image”
android:layout_below=”@id/imageView”
android:layout_centerHorizontal=”true”/>

</RelativeLayout>

MainActivity.kt:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.myapp.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.imageView.setOnClickListener {
// Kullanıcıdan fotoğraf seçme işlemi burada gerçekleştirilebilir
// Burada seçilen fotoğrafın yolu alınarak ImageView’e atanabilir
// Örneğin:
// val selectedImageUri = // Kullanıcı tarafından seçilen fotoğrafın URI’si
// binding.imageView.setImageURI(selectedImageUri)
// Ayrıca TextView’deki metni güncelleyebiliriz:
// binding.textView.text = “Selected image”
}
}
}

Bu örnekte, ImageView’e tıkladığınızda bir fotoğraf seçme işlemi gerçekleştirilebilirsiniz. Seçilen fotoğrafın yolunu alarak ImageView’e atar ve TextView’deki metni güncellersiniz. Ancak, fotoğraf seçme işlemi ve diğer detaylar örnek basitleştirilmiştir. Gerçek bir uygulamada, fotoğraf seçme işlemi için uygun bir kütüphane kullanılmalıdır (örneğin, Android’in kendi kütüphanesi olan ActivityResultContracts ile).

Bir yanıt yazın