ViewModel android kotlin

 आज हम देखने वाले है की kotlin में  ViewModel क्या होता है और वो क्यू उसे करना चाहिए और google ने भी MVVM को सबसे अच्छा architechture कहा है.

तो चलिए देखते है  के ViewModel क्या है और उसे use कैसे करना है.

ViewModel:

ये एक model है जो देखता है के view के अंदर कुछ बदलाव आया क्या और अगर view के अंदर कुछ बदलाव आया तो वो खुद बा खुद अपडेट हो जाता है.

मोबाइल स्क्रीन रोटेट होने के बादहम view बदलता नहीं  जब हम ViewModel का इस्तेमाल करते है हम वो program के ज़रिये देखेगे


ViewModel के बगौर एक उदाहरण देखते है और उसके बाद ViewModel को इस्तेमाल कर के कैसे वो चीज़ होगी और उसमे क्या फायदा होगा वो देखते है.



सब से पेहले एक blank प्रोजेक्ट बनाते है.(File -> New project-> blank project -> सेलेक्ट kotlin language ->finish)


अब हमें module level gradle फाइल में databind true करनी है.

उदाहरन 

  buildFeatures{

        dataBinding true

    }

अब हमें layout टैग में जो भी पैरेंट layout(ConstraintLayout,LinearLayout, etc.) लिया था उसे layout टैग में रखे जेसे निचे दी गयी फोटो में है 

modelviewxml


अब हमें MainActivity में databinding को use करेगे.

और text view में काउंट सेट करेगे और बटन के क्लिक पैर हम वो text view का text अपडेट करेगे.

जेसा निचे की फोटो में दिया गया है 

viewmodelacwithoutkt


जब आप program रन करोगे तब एक इशू देखोगे के जब भी आप मोबाइल rotate करोगे तो जो काउंट  text view होगा,तो वो वापस से उसका text 0 हो जाएगा.


इस लिए हम viewmodel का इस्तेमाल करते है ताकि वो बार बार स्क्रीन rotate क टाइम अपडेट ना हो.

चलिए दूसरा उदाहरन देकहते है जिसमे हम viewmodel को इस्तेमाल करेगे 

viewmodel के लिए हमें  दो 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"



अब हम एक MainActivityViewModel class add करेगे और उसे viewmodel से एक्सटेंड करेगे और उसमे एक countVM नाम का variable लेगे और उसमे 0 वैल्यू रखेगे.

फिर दो फंक्शन बनेगे जिसमे एक काउंट की वैल्यू लेने के लिए होगा.

और दूसरा फंक्शन काउंट की वैल्यू को एक से बढ़ाएगा.

जेसा निचे दी गयी फोटो में है.

viewmodel


अब हमें viewmodel की लाइब्रेरी उसे करेगे उसे इनिशियलाइज़ करेगे.

उदाहरन 

private lateinit var viewModel: MainActivityViewModel

  viewModel=ViewModelProvider(this).get(MainActivityViewModel::class.java)


अब हम viewmodel के ज़रिये दोनों फंक्शन को MainActivity में कॉल करेगे निचे दी गयी फोटो की तरह


viewmodelacwithkt


तो यह था डाटा viewmodel अगर आप को कोई चीज़ नहीं समझी तो आप comment में पुच सकते हो. 


और अय्से ही topic के लिए हमें फॉलो ज़रूर करियेगा आगे हम और MVVM structure in kotlin भी देखने वाले है 





एक टिप्पणी भेजें

1 टिप्पणियाँ