Sobes.tech
Junior — Middle

Как прехвърляш данните към слоя ViewModel?

sobes.tech AI

Отговор от 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("Непознат клас ViewModel")
    }
}

// В Activity или Fragment
val factory = MyViewModelFactory("12345")
val viewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)

Също така може да се използва LiveData или StateFlow вътре във ViewModel за предаване и актуализиране на данни, към които UI се абонира.