Sobes.tech
Junior — Middle

Pode usar ViewModel para fazer alterações na exibição de um elemento de interface?

sobes.tech IA

Resposta da IA

O ViewModel na arquitetura MVVM (Model-View-ViewModel) destina-se a representar dados e lógica relacionados com a exibição, mas não para modificar diretamente os elementos da interface.

O ViewModel contém propriedades e comandos aos quais a View (por exemplo, através de Data Binding) está ligada. As alterações no ViewModel refletem-se automaticamente na interface, mas o próprio ViewModel não deve modificar diretamente os elementos da UI.

Se precisar de alterar a aparência ou o comportamento de um elemento da interface, isso geralmente é feito na View (Activity, Fragment, classes View) ou através de ligação de dados e observadores no ViewModel.

Assim, o ViewModel serve para gerir o estado e os dados, e não para modificar diretamente a UI. Isto ajuda a separar a lógica da apresentação e facilita os testes.

Exemplo:

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

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

Na Activity ou Fragment:

viewModel.userName.observe(this) { name ->
    textView.text = name // a alteração na UI acontece aqui
}