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(){
}
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]()
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()
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)