जनरेट की गई बाइंडिंग क्लास

डेटा बाइंडिंग लाइब्रेरी बाइंडिंग क्लास जनरेट करती है. इनका इस्तेमाल के वैरिएबल और व्यू शामिल हैं. इस दस्तावेज़ में बताया गया है कि जनरेट की गई बाइंडिंग क्लास को पसंद के मुताबिक बनाने के लिए किया जा सकता है.

जनरेट की गई बाइंडिंग क्लास, लेआउट वैरिएबल को लेआउट. आप इसके नाम और पैकेज को कस्टमाइज़ कर सकते हैं बाइंडिंग. जनरेट की गई सभी बाइंडिंग क्लास ViewDataBinding क्लास.

हर लेआउट फ़ाइल के लिए, एक बाइंडिंग क्लास जनरेट होती है. डिफ़ॉल्ट रूप से, क्लास, Binding के साथ पास्कल केस में बदली गई लेआउट फ़ाइल का नाम है प्रत्यय जोड़ा गया. इसलिए, उदाहरण के लिए, अगर लेआउट फ़ाइल का नाम activity_main.xml, इससे जुड़ी जनरेट की गई क्लास ActivityMainBinding है. इस क्लास में लेआउट प्रॉपर्टी से लेकर लेआउट की सभी बाइंडिंग होती हैं देखता है और बाइंडिंग एक्सप्रेशन के लिए वैल्यू असाइन करने का तरीका जानता है.

बाइंडिंग ऑब्जेक्ट बनाना

बाइंडिंग ऑब्जेक्ट, लेआउट को इनफ़्लेट करने के तुरंत बाद बन जाता है, ताकि तो पक्का करें कि व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) में बदलाव न किया गया हो. ऐसा, व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) को, एक्सप्रेशन से साफ़ तौर पर पता किया जा सकता है. ऑब्जेक्ट को किसी लेआउट, बाइंडिंग क्लास पर स्टैटिक तरीकों का इस्तेमाल करने के लिए है. आप पदानुक्रम को देखने के लिए और inflate() बाइंडिंग क्लास, जैसा कि इस उदाहरण में दिखाया गया है:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val binding: MyLayoutBinding = MyLayoutBinding.inflate(layoutInflater)

    setContentView(binding.root)
}

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MyLayoutBinding binding = MyLayoutBinding.inflate(getLayoutInflater());

    setContentView(binding.root);
}

inflate() तरीके का एक वैकल्पिक वर्शन है, जो ViewGroup ऑब्जेक्ट LayoutInflater ऑब्जेक्ट , जैसा नीचे दिए गए उदाहरण में दिखाया गया है:

Kotlin

val binding: MyLayoutBinding = MyLayoutBinding.inflate(getLayoutInflater(), viewGroup, false)

Java

MyLayoutBinding binding = MyLayoutBinding.inflate(getLayoutInflater(), viewGroup, false);

अगर लेआउट को किसी अलग तरीके का इस्तेमाल करके इनफ़्लेट किया गया है, तो उसे बाइंड किया जा सकता है अलग से दिखेगा, जिसकी जानकारी यहां दी गई है:

Kotlin

val binding: MyLayoutBinding = MyLayoutBinding.bind(viewRoot)

Java

MyLayoutBinding binding = MyLayoutBinding.bind(viewRoot);

कभी-कभी आपको पहले से पता नहीं होता कि बाइंडिंग टाइप क्या है. ऐसे मामलों में, आपको इसका इस्तेमाल करके बाइंडिंग बनाएं DataBindingUtil क्लास, जैसा कि नीचे दिए गए कोड स्निपेट में दिखाया गया है:

Kotlin

val viewRoot = LayoutInflater.from(this).inflate(layoutId, parent, attachToParent)
val binding: ViewDataBinding? = DataBindingUtil.bind(viewRoot)

Java

View viewRoot = LayoutInflater.from(this).inflate(layoutId, parent, attachToParent);
ViewDataBinding binding = DataBindingUtil.bind(viewRoot);

अगर किसी दस्तावेज़ में डेटा बाइंडिंग आइटम का इस्तेमाल किया जा रहा है, तो Fragment ListView या RecyclerView अडैप्टर का इस्तेमाल करना चाहिए, तो बेहतर होगा कि inflate() बाइंडिंग क्लास के तरीके या DataBindingUtil क्लास के तौर पर नीचे दिए गए कोड के उदाहरण में दिखाया गया है:

Kotlin

val listItemBinding = ListItemBinding