Junior — Middle
Lze použít ViewModel k úpravám zobrazení prvku rozhraní?
sobes.tech AI
Odpověď od AI
ViewModel v architektuře MVVM (Model-View-ViewModel) je určena k reprezentaci dat a logiky související s vykreslováním, nikoli k přímé změně prvků rozhraní.
ViewModel obsahuje vlastnosti a příkazy, ke kterým je připojen View (například přes Data Binding). Změny ve ViewModelu se automaticky odrážejí v rozhraní, ale samotný ViewModel by neměl přímo měnit prvky UI.
Pokud je potřeba změnit vzhled nebo chování prvku rozhraní, obvykle se to dělá ve View (Activity, Fragment, třídy View) nebo prostřednictvím datového vazby a pozorovatelů ve ViewModelu.
Tímto způsobem slouží ViewModel ke správě stavu a dat, nikoli k přímé změně UI. To pomáhá oddělit logiku od prezentace a usnadňuje testování.
Příklad:
class UserViewModel : ViewModel() {
val userName = MutableLiveData<String>()
fun updateName(newName: String) {
userName.value = newName
}
}
V Activity nebo Fragment:
viewModel.userName.observe(this) { name ->
textView.text = name // změna UI se děje zde
}