Sobes.tech
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 ба ин ҷараёнҳо обуна мешавад.