Sobes.tech
Junior — Middle

Hogyan valósul meg a View és a ViewModel közötti interakció az MVVM mintában?

sobes.tech MI

Válasz az MI-től

Az MVVM (Model-View-ViewModel) mintában a View és a ViewModel közötti interakció adat kötésen (data binding) és változásértesítéseken keresztül történik.

Fő mechanizmusok:

  • Data Binding — A View kapcsolódik a ViewModel nyilvános tulajdonságaihoz és parancsaihoz. Amikor a ViewModel-ben adatok változnak, a View automatikusan frissül.
  • LiveData / Observable — Androidon gyakran használnak LiveData-t vagy más megfigyelhető objektumokat, hogy a ViewModel értesítse a View-t a változásokról.
  • Parancsok (Commands) — A ViewModel parancsokat biztosít, amelyeket a View hív meg a felhasználói interakció során (pl. gombnyomás).

Kotlin példával LiveData:

class MyViewModel : ViewModel() {
    val text = MutableLiveData<String>()

    fun updateText(newText: String) {
        text.value = newText
    }
}

// Activity vagy Fragment
viewModel.text.observe(viewLifecycleOwner) { updatedText ->
    textView.text = updatedText
}

Így a ViewModel nem ismeri közvetlenül a View-t, a View pedig reagál az adatok változására, ezáltal alacsony kötöttség és könnyű tesztelhetőség biztosított.