Android Kotlin EditText onEditorEnterAction DataBinding

Fırat Uckan
2 min readDec 9, 2020

Herkese Merhabalar;

Windows Phone 6 üzerinde geliştirdiğimiz uygulamayı Android cihazları için tasarlamaya başladığımızda ufak tefekte olsa sıkıntılar çıkıyor.Bu sorunlar için araştırma yaparken bazen kaynak açısından problem yaşayabiliyoruz. Birde ilk kez Android e geçiş yaptıysanız sıkıntı biraz daha büyüyor . :) .Bugün bununla ilgili hem yaşadığımız sıkıntı hem de çözümümüz için ufak bir yazı yazmak istedim.

Eski uygulamamızdan bahsetmem gerekirse Windows Phone 6 da yazılmış olan uygulama barkod okuma üzerine tasarladığımız bir el terminali.

En çok sık kullandığımız kod bloğu belkide yukarıdaki gibidir. El terminalinin enter özelliğini kullanmak. Android ile bu uygulamayı yeniden tasarladığımız zaman bunu nasıl yapabiliriz diye araştırmalara girdik ve yabancı olduğumuz bir konu olduğu için açıkçası biraz zorlandık.

Android te bu sorunu DataBinding ile çözümledik.Şimdi neler yaptık küçük bir örnek ile açıklayayım.

Öncelikle gradle dosyamızda dataBinding true olarak setliyoruz.

dataBinding {
enabled = true
}

Öncelikle BindingAdapter ümüzü hazırlıyoruz.

Yukarıda görüldüğü gibi EditTextin oneditorEnterAction methodunu kullanacağımız için bunu BindingAdapter ile belirtiyoruz.

@BindingAdapter("onEditorEnterAction")

Sonrasında ViewModel class ımızı hazırlıyoruz.

var enterKey: ObservableField<String>? = null

Burada enter işlemi yada BindingAdapter içerisinde belirtiğimiz action butonlarından bir tanesine tıklanır ise gönderilecek değeri tanımladık.

var enteredValue: ObservableField<String>? = null

Kullanıcı butona yada enter işlemine bastıktan sonra yazdırılacak data için tanımladık.

val enterMethod: Function1<String, Unit> = this::enterMethod

private fun enterMethod(key: String){
enteredValue?.set(key)
enterKey?.set("")
}

BindingAdapter içerisinde kullandığımız onEditorEnterAction methodu devreye girdiği zaman enterMethod methodunun çağrılmasını sağladık birazdan aşağıda xml içerisinde gördüğünüzde daha anlaşılır olacak.

activity_main.xml dosyasını yukarıdaki gibi düzenledik. Burada dikkat edeceğimiz kısım :

android:text="@={viewModel.enterKey}"

Burayı Android cihazından Enter işlemi uygulandıktan sonra yada Action butonlarından işlem yapıldığında göndermek istediğimiz yazı için hazırladık.

app:onEditorEnterAction="@{ viewModel.enterMethod}"

@BindingAdapter(“onEditorEnterAction “)

Hazırladığımız adaptörü EditText bir özelliği olarak belirtip uygulandığı zaman ise viewModel altında enterMethodun çağrılmasını sağladık.

Uygulama çıktısı aşağıdaki gibidir. Kaynak kodlara aşağıdaki linkten ulaşabilirsiniz.

SourceCode:

--

--

Fırat Uckan

Software Engineer @Trendyol & Software Development