Junior — Middle
76
Каким образом осуществляешь передачу данных в слой ViewModel?
Компании, где спрашивали
NetUP
Ответ от нейросети
sobes.tech AI
В Android для передачи данных в ViewModel обычно используют конструктор ViewModel или специальные методы, если ViewModel создаётся через ViewModelProvider.Factory. Поскольку ViewModel должна быть независимой от UI, данные передаются при создании или через функции, которые обновляют внутреннее состояние.
Пример передачи параметра через фабрику:
class MyViewModel(private val userId: String) : ViewModel() {
// логика с использованием userId
}
class MyViewModelFactory(private val userId: String) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MyViewModel::class.java)) {
return MyViewModel(userId) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
// В Activity или Fragment
val factory = MyViewModelFactory("12345")
val viewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)
Также можно использовать LiveData или StateFlow внутри ViewModel для передачи и обновления данных, а UI подписывается на эти потоки.