Back to questions
Яндекс
Junior — Middle
68
Как осуществляется взаимодействие между View и ViewModel в паттерне MVVM?
Companies where asked
Answer from AI
sobes.tech AI
В паттерне MVVM (Model-View-ViewModel) взаимодействие между View и ViewModel происходит через привязку данных (data binding) и уведомления об изменениях.
Основные механизмы:
- Data Binding — View связывается с публичными свойствами и командами ViewModel. При изменении данных в ViewModel, View автоматически обновляется.
- LiveData / Observable — в Android часто используют LiveData или другие observable объекты, чтобы ViewModel могла уведомлять View об изменениях.
- Команды (Commands) — ViewModel предоставляет команды, которые View вызывает при взаимодействии пользователя (например, нажатие кнопки).
Пример на Kotlin с LiveData:
class MyViewModel : ViewModel() {
val text = MutableLiveData<String>()
fun updateText(newText: String) {
text.value = newText
}
}
// В Activity или Fragment
viewModel.text.observe(viewLifecycleOwner) { updatedText ->
textView.text = updatedText
}
Таким образом, ViewModel не знает о View напрямую, а View реагирует на изменения данных, обеспечивая слабую связанность и удобство тестирования.