Bağlama Adaptörlerini Uygulamanın 2 Yolu

Bağlama Adaptörlerini Uygulamanın 2 Yolu

Bağlayıcı bağdaştırıcıları uygulamanın 2’den fazla yolu olabilir, ancak benim bildiğim bu. Önce bağlama adaptörlerinin ne olduğuna bakalım.

Bağlama Adaptörleri nedir?

Bağlama adaptörü için kullanılır özel özniteliğin uygulanması düzen dosyanızda. Örneğin, varsayılanı kullanmak yerineandroid:text öznitelik, yeni bir öznitelik oluşturarak özelleştirmek istiyorsunuz app:customText.

Varsayılan Özellik – android:text

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

Özel Nitelik – app:customText

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

Özel özniteliği uygulamak için bağlama bağdaştırıcıları kullanıyoruz. Bağlama bağdaştırıcısı, veri bağlama kitaplığının bir parçasıdır. Yani ihtiyacın var veri bağlamayı etkinleştir senin içinde build.gradle modül dosyası.

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

Bir bağlama bağdaştırıcısı uygulamak için, işlevi şu şekilde açıklamanız gerekir: @BindingAdapter("attribute name here") birlikte View bağlanmak istediğiniz sınıf. geçerek yapılabilir. View sınıf (örn. TextView) bir işlev parametresi olarak veya uzantı işlevini kullanarak.

1. Geçiş View Fonksiyon Parametresi olarak

Bunun standart bir yol olup olmadığından emin değilim (veya belki önerilen bir yol?) Ama bu resmi belgelerde. Başlangıçta öğrendiğim şey aşağıdaki ikinci yöntem (yani uzatma işlevini kullanarak)

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

2. Kullanım View Uzatma İşlevi

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

Bu bir uzantı işlevi olduğundan, doğrudan bu şekilde kodda çağırabilirsiniz.

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

Bunu ilk yöntemle de yapabilirsiniz, ancak ikinci yöntem daha okunaklı.

Şahsen

İkinci yöntemi tercih ediyorum, bağlama adaptörünü uygulamak için uzatma işlevini kullanın. uzatmak olan gerçek niyeti yansıtır.TextView işlevsellik.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.