आज हम देखने वाले है ViewModel के साथ DataBinding कैसे होती है और LiveData के साथ DataBinding कैसे होती है.
हमने पेहले के टॉपिक्स में देखा है के databind क्या होती है वो किस लिए बहोत इम्पोर्टेन्ट है.
databinding को किस तरह से enable करते है.
उदाहरन
buildFeatures{
dataBinding true
}
आप को कुछ dependancy भी add करना होगी.
उदाहरन
def lifecycle_version = "2.3.1"
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
उसे आप डिटेल में हमारे हमारे पुराने topic में देख सकते हो आगे उसकी लिंक दी गयी है.
https://www.antechs.in/2021/03/data-binding-in-kotlin.html
पेहले हम viewmodel के साथ databinding देखते है.
उसे हम एक बटन क्लिक listner पैर देखेगे.
हम डायरेक्ट view model के अपडेट फंक्शन को view से कॉल करेगे यानि xml फाइल से कॉल करेगे.
तो हमने databinding तो enable कर दिए अब हमें xml फाइल में बदलाव करने होगे जेसे हमें layout टैग add करना होगा और उसके अंदर हमारा डिजाईन होगा.
और layout टैग में हम data टैग add करेगे और उसमे variable टैग में name और टाइप लिखेगे
name उसे होता है viewmodel के अंदर के चीजों को फेत्च करनेके लिए.
टाइप में हम जो view model use करने वाले है उसका path सेट करना होता है.
उदाहरन
<data>
<variable
name="viewmodel"
type="com.antechs.viewmodelfactory.MainActivityViewModel" />
</data>
आगे के लिए हम ने पुराने topic और उदाहरन लिया है उसकी लिंक निचे दी गयी है.
..............
अब हमें सिर्फ एक लाइन add करनी है जिसमे हम view में जो data varibale name जो दिया है उसे viewmodel assign कर के
उदाहरण
binding.viewmodel=viewModel
और पूरी फोटो निचे दी गयी है.
और जो हमने view model लिया है उसकी भी फोटो निचे दी गयी है.
और जो view model factory लिया है उसकी भी फोटो निचे दी गयी है.
अब हम जो xml फाइल है उसके अंदर के बटन को onclick पर view model का अपडेट फंक्शन कॉल करेगे.
उदाहरन
android:onClick="@{()->viewmodel.updateCount()}"
निचे xml की पूरी फोटो दी गयी है.
इस तरह से हम viewmodel के साथ databinding करते है.
अब हमें live data के साथ databinding के लिए थोड़े बदलाव करने होगे.
हम जो text view है उसपर live data की मदद से डायरेक्ट view के text को वैल्यू सेट करेगे
सब से पेहले हमें view model में बदलाव करना होगा वह हमें live data का इस्तेमाल करना होगा जीना निचे दी गयी फोटो में है.
फिर बाद में हमें MainActivity में बदलाव करने होगे पुराने कोड को comment करना होगा जो हमने text को वैल्यू सेट करने के लिए लिखे थेऔर उसके बाद हमें
binding.lifecycleOwner=this यह करना होगा
पूरा कोड आप निचे दी गयी फोटो में देख सकते हो.
और xml में text view को वैल्यू सेट करनि होगी जेसे निचे दी गयी फोटो में है.
0 टिप्पणियाँ