Junior — Middle
Чӣ гуна интиқоли маълумотро ба қабати ViewModel анҷом медиҳӣ?
sobes.tech AI
Ҷавоб аз AI
Дар Android, барои интиқоли маълумот ба 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)
Ҳамчунин, дар дохили ViewModel метавон аз LiveData ё StateFlow барои интиқол ва навсозии маълумот истифода бурд, ва UI ба ин ҷараёнҳо обуна мешавад.