DEV Community

Cover image for Android ViewModel
Danilo Barreto
Danilo Barreto

Posted on

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

Top comments (0)