Sobes.tech
Junior — Middle

Milyen megközelítéseket és megvalósításokat ismersz a ViewModel mintára?

sobes.tech MI

Válasz az MI-től

Az Androidban a ViewModel minta az UI-adatok tárolására és kezelésére szolgál, figyelembe véve az olyan komponensek életciklusát, mint az Activity vagy Fragment. Fő megközelítések és megvalósítások:

  • Android Architecture Components ViewModel — egy osztály az androidx.lifecycle könyvtárból, amely lehetővé teszi az adatok megőrzését az Activity/Fragment újraalkotásakor (például képernyőforgatáskor). A ViewModel addig él, amíg a UI komponens él.

  • ViewModel LiveData-val — gyakran a ViewModel tartalmaz LiveData-t, hogy automatikusan frissítse a UI-t az adatok változásakor.

  • Egyedi ViewModel — saját ViewModel mintát valósíthat meg, elválasztva a logikát és az adatokat a UI-tól, de AndroidX nélkül, például tiszta MVVM-ben.

Példa a standard ViewModel LiveData-val való használatára:

class MyViewModel : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> = _data

    fun loadData() {
        // adatok betöltése, például egy repository-ból
        _data.value = "Példa adat"
    }
}

// Activity vagy Fragment
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this) { value ->
    textView.text = value
}
viewModel.loadData()