आइए दोनों की समीक्षा करें।
विन्यास
कोटलिन Android एक्सटेंशन
- उचित लेआउट सिंथेटिक एक्सटेंशन आयात करें:
import kotlinx.android.synthetic.main.<layout>.*
- उनकी आईडी के माध्यम से कोड में संदर्भ विचार
textView.text = "Hello, world!":। इन एक्सटेंशन पर काम: Activities, Fragmentsऔर Views।
बाइंडिंग देखें
- अपनी कक्षा के अंदर बाध्यकारी संदर्भ बनाएँ:
private lateinit var binding
YourClassBinding
- अपने बंधन बढ़
binding = YourClassBinding.inflate(layoutInflater)अंदर Activityकी onCreateऔर कॉल setContentView(binding.root), या उस में बढ़ Fragment'रहा है onCreateViewतो इसे वापस:return binding.root
- उनके आईडी का उपयोग करके बाध्यकारी के माध्यम से कोड में संदर्भ विचार
binding.textView.text = "Hello, world!"
प्रकार की सुरक्षा
कोटलिन एंड्रॉइड एक्सटेंशन और व्यूबाइंडिंग परिभाषा द्वारा सुरक्षित हैं, क्योंकि संदर्भित विचार पहले से ही उपयुक्त प्रकारों में डाले गए हैं।
अशक्त सुरक्षा
कोटलिन एंड्रॉइड एक्सटेंशन और व्यूबाइंडिंग दोनों सुरक्षित हैं। व्यूबाइंडिंग का यहां कोई फायदा नहीं है । KAE के मामले में , यदि दृश्य केवल कुछ लेआउट कॉन्फ़िगरेशन में मौजूद है, तो IDE इंगित करेगा कि आपके लिए:

तो आप इसे कोटलिन में किसी भी अन्य अशक्त प्रकार के रूप में मानते हैं, और त्रुटि गायब हो जाएगी:

लेआउट परिवर्तन लागू करना
कोटलिन एंड्रॉइड एक्सटेंशन के मामले में , लेआउट तुरंत सिंथेटिक एक्सटेंशन की पीढ़ी में अनुवाद करता है, इसलिए आप उन्हें तुरंत उपयोग कर सकते हैं। व्यूबाइंडिंग के मामले में , आपको अपना प्रोजेक्ट बनाना होगा
गलत लेआउट का उपयोग
कोटलिन एंड्रॉइड एक्सटेंशन के मामले में , गलत लेआउट सिंथेटिक एक्सटेंशन को आयात करना संभव है, इस प्रकार कारण NullPointerException। हम ViewBinding पर लागू होते हैं , क्योंकि हम गलत Bindingवर्ग आयात कर सकते हैं । हालांकि, गलत वर्ग नाम की तुलना में गलत आयात को नजरअंदाज करना अधिक संभव है, खासकर अगर लेआउट फ़ाइल को अच्छी तरह से Activity/ Fragment/ के नाम पर रखा गया है View, तो ViewBinding का ऊपरी हाथ यहां है।
KAE बनाम व्यूबाइंडिंग का सारांश
- प्रकार की सुरक्षा - ड्रा।
- अशक्त सुरक्षा - ड्रा।
- बॉयलरप्लेट कोड - KAE जीतता है। Kotlin Android एक्सटेंशन दस्तावेज़ से :
कोटलिन एंड्रॉइड एक्सटेंशन प्लगइन हमें बिना किसी अतिरिक्त कोड को जोड़ने के बिना इन पुस्तकालयों में से कुछ के साथ एक ही अनुभव प्राप्त करने की अनुमति देता है।
- लेआउट परिवर्तन लागू करना - KAE जीतता है। व्यूबाइंडिंग के विपरीत परिवर्तन तत्काल हैं ।
- गलत लेआउट उपयोग - ViewBinding जीतता है
मुझे लगता है कि KAE के लिए ViewBinding के प्रतिस्थापन के बारे में बड़ी गलत धारणा है । लोग बड़े कीवर्ड सुनते हैं और उसे पहले से सत्यापित किए बिना दोहराते हैं। निश्चित रूप से, Java विकास के लिए ViewBinding अभी सबसे अच्छा विकल्प है ( ButterKnife के लिए प्रतिस्थापन ), लेकिन कोटलिन में KAE पर कोई गलत फायदा नहीं हुआ है ( गलत लेआउट उपयोग अनुभाग देखें)।
साइड नोट:
मुझे यकीन है कि डेटाबाइंडिंग लोग ViewBinding को पसंद करेंगे :)