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.