Aumentando a produtividade no Android com o Butter Knife
6 min6 minutos de leitura
6 min6 minutos de leitura
Como melhorar a nossa produtividade de desenvolvimento de apps no Android ?
Durante o desenvolvimento da nossa lista de cursos, vimos diversos assuntos sobre Android, como por exemplo, criação e personalização de uma lista e até nos comunicamos com apps externas... Porém, vamos verificar a quantidade de código que utilizamos para construir essa app simples. Começaremos pela nossa activity:
Autor(a)
Alex Felipe
Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
Olha o tanto de código que escrevemos apenas para buscar uma referência de uma ListView. Agora vejamos esse outro trecho:
listaDeCursos.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursocurso= (Curso) parent.getItemAtPosition(position);
Intentintent=newIntent(Intent.ACTION_VIEW, Uri.parse(curso.getUrl()));
startActivity(intent);
}
});
Perceba que para tarefas que são bem comuns como, por exemplo, pegar a referência de uma View ou criar um listener para implementar um clique, estamos escrevendo muito código!
Será que não existe alguma biblioteca que nos ajude com esse tipo de tarefa? Pensando justamente nesse detalhe, o Jake Wharton desenvolveu a biblioteca Butter Knife capaz de facilitar todos esses procedimentos de pegar referência de View ou até mesmo implementar um listener.
Mas como podemos adicioná-la no nosso projeto? Vá em "File > Project Structure". Vá até o menu "app" e depois na aba "Dependencies":
Essa é a janela em que lista todas as dependências do projeto, ou seja, agora precisamos adicionar mais uma clicando no sinal de "soma verde > Library Dependencie". Então escreva "butterknife":
Selecionando o primeiro item, clique em "OK":
Observe que agora, o Butter Knife aparece na nossa lista de dependências, basta clicar em "OK". Pronto! Já podemos utilizá-lo! Então vamos começar por esse trecho de código:
Como podemos melhorar esse código com o Butter Knife? Primeiro, precisamos chamar o método estático bind() da classe ButterKnife que recebe a Activity que ele precisa associar às Views, então podemos enviar a nossa própria Activity, ou seja, o this:
Mas porque tivemos que fazer essa alteração? É justamente pela questão do Butter Knife utilizar annotations para associar as Views. Mas e agora? O que fazemos? Simples! Basta apenas adicionarmos a anotação @Bind passando por parâmetro o id dessa View:
Só isso? Sim! Apenas isso já faz todo aquele código que escrevíamos por de traz dos panos! Podemos até apagar aquele trecho do nosso código. Vejamos o resultado da nossa Activity:
Você pode estar se perguntando sobre o motivo de um atributo não ser private e é justamente pelo motivo do Butter Knife não funcionar com o modificador de acesso private, ou seja, é aquele famoso "Trade Off": "ganhamos em um lado, porém perdemos em outro...".
O nosso código já melhorou um pouco, vamos verificar esse outro trecho de código:
listaDeCursos.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursocurso= (Curso) parent.getItemAtPosition(position);
Intentintent=newIntent(Intent.ACTION_VIEW, Uri.parse(curso.getUrl()));
startActivity(intent);
}
});
Como será que podemos melhorar essa implementação toda? Vamos criar um método que descreve o que esse listener representa:
publicvoidacessaUrl() {
}
E agora? O que faremos? Da mesma forma que usamos uma anotação para pegar a referência de uma View, usaremos a @OnItemClick para representar o clique de um elemento de uma lista passando o id dessa lista por parâmetro:
O que achou? Bem mais elegante e de fácil compreensão! O Butter Knife é uma biblioteca que faz a "injeção" de View que é justamente pegar todas as referências das Views de uma Activity e permitir o acesso por meio de anotações que facilitam, e tanto, a nossa vida!
O que você achou do Butter Knife? Gostaria de aprender mais sobre android? Que tal dar uma na formação Android aqui da Alura?