Ответ
View в MVVM отвечает за отображение UI и взаимодействие с пользователем. Она не содержит бизнес-логики, а лишь передает действия пользователя во ViewModel через биндинг или колбэки. View также подписывается на изменения данных в ViewModel (например, через LiveData или StateFlow) и обновляет интерфейс.
Пример:
class MainActivity : AppCompatActivity() {
private val viewModel: MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
viewModel.userName.observe(this) { name ->
binding.textView.text = name // Обновление UI при изменении данных
}
binding.button.setOnClickListener {
viewModel.onButtonClicked() // Передача действия во ViewModel
}
}
}
Ключевые моменты:
- Пассивная (не управляет данными)
- Тонкая (минимум кода)
- Зависит от ViewModel, но не наоборот