Для чего нужна View в MVVM

«Для чего нужна View в MVVM» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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, но не наоборот