Sobes.tech
Junior — Middle

Hogyan végzed az adatok átadását a ViewModel rétegbe?

sobes.tech MI

Válasz az MI-től

Androidban az adatok átadásához a ViewModelnak általában a ViewModel konstruktorát vagy speciális módszereket használnak, ha a ViewModel a ViewModelProvider.Factory segítségével jön létre. Mivel a ViewModel-nek függetlennek kell lennie a UI-tól, az adatok átadásra kerülnek a létrehozáskor vagy olyan funkciókon keresztül, amelyek frissítik a belső állapotot.

Példa paraméter átadására gyár segítségével:

class MyViewModel(private val userId: String) : ViewModel() {
    // logika a userId használatával
}

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("Ismeretlen ViewModel osztály")
    }
}

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

Szintén használható a LiveData vagy a StateFlow a ViewModel belsejében az adatok továbbítására és frissítésére, és a UI feliratkozik ezekre a csatornákra.