Android Architecture Components #2 Live Data para criação de Observables em Kotlin

Na postagem anterior falei um pouco sobre os architecure components e sobre o padrão MVVM. Dentre as características desse padrão, em diferentes momentos citei o fluxo unidirecional de informações como sendo uma das principais vantagens do MVVM, e que uma das maneiras de implementá-lo é expondo informações através de observables.

Live Data

Live Data é uma wrapper class disponibilizada pelo pacote de architecture components para permitir que dados sejam observados, e como explicado anteriormente, pode utilizada dentro de ViewModels para expor informações. Você pode utilizá-la da seguinte forma:

data class Usuario(nome: String)
class DashboardViewModel : ViewModel {
var usuario: LiveData<Usuario> = MutableLiveData()
    fun getUserInfo(): LiveData<Usuario>{
usuario = repository.loadInfo()
/*
* repository retorna uma instância de LiveData
*/
}
}

Uma vez que o usuário está envolvido em um LiveData, as informações podem ser observadas em uma LifecycleActivity ou LifecycleFragment da seguinte forma:

class DashboardActivity : LifecycleActivity {
override fun onCreate(state: Bundle?) {
super.onCreate(state)
setContentView(R.layout.activity_dashboard)
val viewModel = ViewModelProviders.of(this).get(DashboardViewModel::class.java)
viewModel.usuario.observe(this, Observer { usuario ->
//Update view com dados do usuário
text_view_nome_usuario.text = usuario.nome
}
}
}

Desta forma, sempre que o usuário for atualizado no ViewModel, digamos, por uma chamada ao banco de dados, o código contido na View será invocado, e consequentemente a View estará sempre sincronizada com as informações do usuário.


It is our job to parent ourselves so we can be what we want to be. — Mel Robbins

Essa é uma forma de implementar o padrão MVVM com o auxílio dos architecture components disponibilizados pelo Google. Se você gostou dessa postagem, não se esqueça de compartilhar e me seguir para ficar atualizado sobre as próximas postagens.

Até mais.