0

findViewByID X Android Kotlin Extensions X viewBinding

Luiz Henrique
Luiz Henrique


Fala galera, belezaaaa? Espero que sim!

Antes de começar a conversa sobre o tema, precisamos alinhar alguns pontos, irei abordar nesse artigo formas de recuperar o componente de uma View. Não sou nenhum expert em Android, então me dou o direito de errar! 


Let’s go!


Vamos trabalhar em cima do Kotlin(.kt), sim, eu sei que pode ser usado com o JAVA(.java) também, mas para fim de exemplo irei utilizar o kotlin como referência. Vamos partir do entendimento do que é uma View.

View é uma classe que é usada para criar os componentes de UI(User Interface), que nada mais é que os componentes que são apresentados aos usuários, botões, campos texto, etc.

 

 

 

Com a criação do seu arquivo de layout(XML), é preciso criar (se já não foi criado com o XML) o arquivo .kt no caso do Kotlin, pois é através desse arquivo que podemos “conversar” com os componentes, criar eventos para o layout criado etc.


Até aqui tudo ok, certo? Como dizem, mamão com açúcar.


Como fazemos para manipular os elementos do arquivo de layout .XML no arquivo .kt?

A primeira coisa que precisamos ter em mente é que no arquivo de layout, mais específico os componentes de layout precisam ter um ID (nome), que iremos usar sempre que quisermos manipulá-lo.

 

Você deve estar se perguntando, mas como o arquivo .kt vai saber que está atrelado ao layout certo?


Isso acontece pela referência criada no método onCreate da Activity, onde ela faz menção ao arquivo de layout que será usado, definimos em setContentView().

 

Luiz para de enrolação e fala logo sobre o tema!

 

Ok ok, vamos ao tema.


Para fazer a chamada do componente dentro de uma activity, podemos usar o findViewById, Kotlin extension e agora também o viewBinding, muitas opções né ?


FindViewByd

Geralmente no início do aprendizado em android é comum se deparar com a explicação com o findViewById, onde é preciso informar o tipo e apontar o id do componente que será usado, essa é a forma na minha opinião mais fácil de se entender e aplicar na prática quando se está iniciando os estudos, mas existe outras formas de fazer a chamada do componente.



Kotlin Extension

Sim, se você tem um pouco mais de conhecimento deve adorar usar o extensions, o famoso kotlin-android-extensions, já você que não sabe sobre o que estou falando eu vou explicar, adicionando no arquivo Gradle(Module) o plugin citado acima, não é preciso mais usar o findViewById na sua activity, podemos usar diretamente o id do componente, muito mais fácil né ?!


 

Só tem um detalhe, ele está sendo descontinuado =/, e será removido por volta de setembro de 2021.


Porque foi descontinuado?

 

Não vou abordar esse assunto aqui, pois o intuito é apresentar as opções disponíveis hoje para fazer o binding dos componentes de UI. Fica a oportunidade para você pesquisar caso queira se aprofundar mais no assunto, mas adianto que foi por questão de segurança e performance.


viewBinding 

Por fim, a última opção que vou apresentar será o viewBinding.

Para ativar, no arquivo build.gradle(Module), é preciso adicionar o bloco de código a seguir, dentro da estrutura android:



Uma vez ativado esse recurso seus arquivos de layout passam a ter uma classe com o padrão de nome nomearquivoxml + Binding, exemplo, activity_main.xml -> ActivityMainBinding, junto com a classe Binding é liberado o método getRoot() que retorna a visualização raiz do XML. 


Como conseguir uma instância da classe binding?


Precisamos criar uma variável que terá o papel de representar o seu arquivo de layout.

 

Feito isso, dentro do onCreate da sua activity é preciso inflar o layout correspondente e fazer o vínculo no setContentView().

 

 

Temos como resultado a possibilidade de chamar os componentes e seus atributos usando como base a variável criada.

 

Vantagens

Segurança nula, segurança de tipo, sem impacto no tempo de construção, suporta kotlin e java.


Conclusão:

É isso ai pessoal, encerramos por aqui, espero que tenha ajudado vocês a entenderem um pouco como funciona o consumo de componentes de um layout. 

Sugestões no documento são bem vindas! Abraço!  


Fonte:


https://developer.android.com/reference/android/view/View 


https://android-developers.googleblog.com/2020/11/the-future-of-kotlin-android-extensions.html


https://betterprogramming.pub/why-are-kotlin-synthetics-deprecated-and-what-are-the-alternatives-5c2b087dda1c


https://developer.android.com/topic/libraries/view-binding?hl=pt-br


 



0
3

Comentários (0)

None

Brasil