Android ViewModel

dgbarreto

Danilo Barreto

Posted on September 18, 2021

Android ViewModel

Uma das práticas básicas de desenvolvimento que temos que adotar assim que saímos do campo de estudos e entramos no campo de desenvolvimento profissional de aplicativos é separar a camada de negócios da camada de visualização. A camada de visualização possui um ciclo de vida próprio que muda de acordo com o estado do device (se a app está em primeiro ou segundo plano, se rotacionamos o aparelho, se o SO solicita memória, etc). Os dados de negócio não podem estar sujeitos a esses tipos de mudança.
Para auxiliar essa implementação o Kotlin traz o ViewModel. O ViewModel permite realizar uma delegação e uma separação dos dados de negócio. Vamos à implantação:

O primeiro passo é a referencia à biblioteca no build.gradle.
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'

A seguir no projeto crie uma classe herdando de ViewModel

public class PackageModel : ViewModel(){
}
Enter fullscreen mode Exit fullscreen mode

Agora vem a parte importante da implementação. O Kotlin possui um recurso chamado Property Delegate. Basicamente ele permite que uma propriedade delegue o getter e o setter para uma classe externa. A sintaxe é essa:

var [nome] : [tipo] by [classe delegada]()
Enter fullscreen mode Exit fullscreen mode

No nosso caso, vamos declarar a propriedade delegada do modelo dentro de uma Activity ou Fragment. Vai ficar assim:

private val model : PackageModel by viewModels()
Enter fullscreen mode Exit fullscreen mode

No exemplo acima viewModels() é um property delegate que vem pronto do Kotlin.

Deste ponto em diante basta implementar as propriedades e métodos necessários

💖 💪 🙅 🚩
dgbarreto
Danilo Barreto

Posted on September 18, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related