Sobes.tech
Junior — Middle

Kan je ViewModel gebruiken om wijzigingen aan te brengen in de weergave van een interface-element?

sobes.tech AI

Antwoord van AI

ViewModel in de MVVM-architectuur (Model-View-ViewModel) is bedoeld om gegevens en logica weer te geven die verband houden met de weergave, maar niet voor het rechtstreeks wijzigen van UI-elementen.

De ViewModel bevat eigenschappen en commando's waarop de View (bijvoorbeeld via Data Binding) is gekoppeld. Wijzigingen in de ViewModel worden automatisch weergegeven in de interface, maar de ViewModel zelf mag geen UI-elementen rechtstreeks wijzigen.

Als je het uiterlijk of gedrag van een interface-element wilt wijzigen, doe je dat meestal in de View (Activity, Fragment, View-klassen) of via datakoppeling en observatoren in de ViewModel.

De ViewModel dient dus voor het beheren van de toestand en gegevens, niet voor het rechtstreeks wijzigen van de UI. Dit helpt om logica van presentatie te scheiden en testen te vergemakkelijken.

Voorbeeld:

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

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

In Activity of Fragment:

viewModel.userName.observe(this) { name ->
    textView.text = name // UI-wijziging gebeurt hier
}