Sobes.tech
Junior — Middle

Je možné použiť ViewModel na zmeny v zobrazení prvku rozhrania?

sobes.tech AI

Odpoveď od AI

ViewModel v architektúre MVVM (Model-View-ViewModel) je určený na reprezentáciu dát a logiky súvisiacich s vizualizáciou, ale nie na priame meniace prvky rozhrania.

ViewModel obsahuje vlastnosti a príkazy, na ktoré je viazané View (napríklad cez Data Binding). Zmeny vo ViewModel sa automaticky odrážajú v rozhraní, ale samotný ViewModel by nemal priamo meniť prvky UI.

Ak je potrebné zmeniť vzhľad alebo správanie prvku rozhrania, zvyčajne sa to robí vo View (Activity, Fragment, triedy View) alebo prostredníctvom dátového väzby a pozorovateľov vo ViewModel.

Týmto spôsobom slúži ViewModel na správu stavu a dát, nie na priame meniace UI. To pomáha oddeliť logiku od prezentácie a uľahčuje testovanie.

Príklad:

class UserViewModel : ViewModel() {
    val userName = MutableLiveData<String>()

    fun updateName(newName: String) {
        userName.value = newName
    }
}

V Activity alebo Fragment:

viewModel.userName.observe(this) { name ->
    textView.text = name // zmena UI sa deje tu
}