0

ViewBinding

Maria Santana
Maria Santana

Olá devs, tudo bem?


Visto que o kotlin-android-extensions está depreciado e algumas aulas da plataforma apresenta ele no código, hoje eu trago um artigo de como substituir ele, pelo uso do ViewBinding.


O primeiro passo é ir no arquivo build.gradle e adicionar uma feature, como mostra o código abaixo:

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}


Para usar é bem simples. Depois de criado seu arquivo de layout.xml basta ir no método onCreate() na sua MainActivity e adicionar o seguinte código:

private lateinit var binding: ResultProfileBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ResultProfileBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}


  1. Primeiro você cria uma variável que será do tipo ResultProfileBinding e declara ela como lateinit, falando que será iniciada depois
  2. No método onCreate() você irá inicializar essa variável, usando a classe ResultProfileBinding e o inflate passando como parâmetro o layoutInflater.
  3. Após isso, para o código ficar mais legível, você cria uma variável passando o binding.root, o root é do método getRoot(), e serve para obter uma referência raiz da View.
  4. Passe o view root para dentro do método setContentView() .


Agora você pode usar a instância para fazer referência a qualquer uma das vizualizações.


Exemplo no código abaixo:

binding.name.text = viewModel.name
binding.button.setOnClickListener { viewModel.userClicked() }


Você também pode usar o ViewBinding em fragments.


Além do ViewBinding, é muito comum fazer referência ao componentes do xml, com o uso do findViewById(). Existem algumas diferenças entre o ViewBinding e o findViewById(), como a compilação e a nullability. Indico vocês a dar uma olhadinha na documentação do Android e a assistir ao vídeo explicativo do mestre Chico .


Qualquer dúvida ou feedback será bem vindo nos comentários.


Abraços :)

0
6

Comentários (0)

Mobile Developer | Kotlin | Java

Brasil