Sobes.tech
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 реагирует на изменения данных, обеспечивая слабую связанность и удобство тестирования.