Junior — Middle
Veri aktarımını ViewModel katmanına nasıl yapıyorsun?
sobes.tech yapay zeka
AI'dan gelen yanıt
В 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 подписывается на эти потоки.