Skip to content

7. Listener Extensions

Gabriel Brasileiro edited this page Jun 13, 2020 · 3 revisions

Listener extensions is an artifact to process your ViewModel states and events.

The method onEvent will receive and listener all ViewModels you implement with EventView<Event>.

Example:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setupEventListener()
    setupStateListener()
    setupButtonListeners()
}

private fun setupEventListener() {
    onEvent(viewModel) { event ->
        when (event) {
            is MainEvent.ShowLoadScreen -> startActivity<PersonActivity>()
            is MainEvent.ShowPersonScreen -> startActivity<LoadActivity>()
        }
    }
}

Sample Code

The method onStateChanged will receive and listener all ViewModels you implement with StateView<State>.

Example:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setupStateListener()
    setupTextListeners()
}

private fun setupStateListener() {
    onStateChanged(stateViewModel) { state ->
        setupTexts(state.name, state.age)
    }
}

private fun setupTexts(name: String, age: String) {
    val nameTextView = findViewById<TextView>(R.id.name_text_view)
    val ageTextView = findViewById<TextView>(R.id.age_text_view)

    nameTextView.text = name
    ageTextView.text = age
}

Sample code

Clone this wiki locally