Mari kita tinjau keduanya.
Konfigurasi
Ekstensi Android Kotlin
- Impor ekstensi sintetis tata letak yang sesuai:
import kotlinx.android.synthetic.main.<layout>.*
- Referensi pandangan dalam kode melalui id mereka:
textView.text = "Hello, world!"
. Ekstensi ini bekerja pada: Activities
, Fragments
dan Views
.
Lihat Binding
- Buat referensi yang mengikat di dalam kelas Anda:
private lateinit var binding
YourClassBinding
- Mengembang mengikat Anda
binding = YourClassBinding.inflate(layoutInflater)
dalam Activity
's onCreate
dan panggilan setContentView(binding.root)
, atau mengembang di Fragment
' s onCreateView
kemudian kembali:return binding.root
- Tampilan referensi dalam kode melalui ikatan menggunakan id mereka
binding.textView.text = "Hello, world!"
Ketik keamanan
Kotlin Android Extensions dan ViewBinding adalah tipe aman menurut definisi, karena pandangan yang direferensikan telah dicasting ke tipe yang sesuai.
Keamanan kosong
Kotlin Android Extensions dan ViewBinding keduanya aman nol. ViewBinding tidak memiliki keunggulan di sini . Dalam kasus KAE , jika tampilan hanya ada di beberapa konfigurasi tata letak, IDE akan menunjukkannya untuk Anda:
Jadi Anda memperlakukannya sebagai jenis nullable lainnya di Kotlin, dan kesalahannya akan hilang:
Menerapkan perubahan tata letak
Dalam kasus Kotlin Android Extensions , perubahan tata letak langsung diterjemahkan ke generasi ekstensi sintetis, sehingga Anda dapat menggunakannya segera. Dalam hal ViewBinding , Anda harus membangun proyek Anda
Penggunaan tata letak salah
Dalam kasus Kotlin Android Extensions , dimungkinkan untuk mengimpor ekstensi sintetis tata letak yang salah, sehingga menyebabkan NullPointerException
. Hal yang sama berlaku untuk ViewBinding , karena kita dapat mengimpor Binding
kelas yang salah . Meskipun, lebih mungkin untuk mengabaikan impor yang salah daripada nama kelas yang salah, terutama jika file tata letak dinamai Activity
/ Fragment
/ View
, jadi ViewBinding lebih unggul di sini.
Ringkasan KAE vs ViewBinding
- Ketik keamanan - Draw.
- Keamanan kosong - Draw.
- Kode Boilerplate - KAE menang. Dari dokumentasi Kotlin Android Extensions :
Plugin Kotlin Android Extensions memungkinkan kita untuk mendapatkan pengalaman yang sama dengan beberapa perpustakaan ini, tanpa harus menambahkan kode tambahan.
- Menerapkan perubahan tata letak - KAE menang. Perubahan instan berbeda dengan ViewBinding .
- Penggunaan tata letak yang salah - ViewBinding menang
Saya pikir ada kesalahpahaman besar tentang ViewBinding menjadi pengganti KAE . Orang-orang mendengar kata kunci besar dan mengulanginya tanpa memverifikasi terlebih dahulu. Tentu, ViewBinding adalah pilihan terbaik untuk pengembangan Java saat ini (pengganti ButterKnife ), tetapi tidak ada atau sedikit keuntungan dibandingkan KAE di Kotlin (lihat bagian Penggunaan tata letak yang salah ).
Catatan:
Saya yakin orang-orang DataBinding akan menyukai ViewBinding :)