Sobes.tech
Junior — Middle

Jakie podejścia i implementacje wzorca ViewModel znasz?

sobes.tech AI

Odpowiedź od AI

Wzorzec ViewModel w Androidzie służy do przechowywania i zarządzania danymi interfejsu użytkownika, uwzględniając cykl życia komponentów takich jak Activity czy Fragment. Główne podejścia i implementacje:

  • Android Architecture Components ViewModel — klasa z biblioteki androidx.lifecycle, która pozwala zachować dane podczas ponownego tworzenia Activity/Fragment (np. podczas obrotu ekranu). ViewModel żyje tak długo, jak długo żyje komponent UI.

  • ViewModel z LiveData — często, ViewModel zawiera LiveData, aby automatycznie aktualizować UI przy zmianie danych.

  • Własny ViewModel — można zaimplementować własny wzorzec ViewModel, oddzielając logikę i dane od UI, ale bez użycia AndroidX, np. w czystym MVVM.

Przykład użycia standardowego ViewModel z LiveData:

class MyViewModel : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> = _data

    fun loadData() {
        // ładowanie danych, np. z repozytorium
        _data.value = "Przykład danych"
    }
}

// W Activity lub Fragment
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.data.observe(this) { value ->
    textView.text = value
}
viewModel.loadData()