Sobes.tech
Junior — Middle

¿Cómo realizas la transferencia de datos al nivel ViewModel?

sobes.tech AI

Respuesta de la IA

В 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 подписывается на эти потоки.