Reduzindo o código no Android com Butter Knife

Viva Dev

Hoje estou aqui para apresentar a biblioteca Butter Knife desenvolvida pelo Jake Wharton. Todos já depararam-se com os tais “findViewByID” espalhados por todo o código e que tornam-se irritantes depois de um tempo. Imagina só se pudesses evitar isso. Isso é apenas uma parte!

Esta biblioteca foi inventada para reduzir o tamanho do código, usando anotações tanto para os “findViewByID” como também para os eventos.

Para testar o funcionamento da biblioteca vamos criar uma aplicação simples que muda o texto “Hello World” para “Olá Mundo”.

Agora vamos ao código

Primeiro Passo: Adicionar a Biblioteca a dependência

compile ‘com.jakewharton:butterknife:8.4.0’
 annotationProcessor ‘com.jakewharton:butterknife-compiler:8.4.0’

(A versão do Butter Knife no momento da criação do artigo é 8.4.0)

Segundo Passo: Usar anotações

A nível da activity usamos a anotação @BindView sobre a variável que estará conectada ao layout.

@BindView(R.id.texto) TextView texto;

(NB: É necessário criar uma TextView com o id texto no layout que será usado pela activity).

Terceiro Passo: Injectar Views

Antes de fazer o uso dos elementos criados a partir do @BindView é necessário injectar as views. Para isto chamamos o método bind da Classe ButterKnife no método onCreate();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
}

Por tanto agora já se pode manipular os elementos sem a necessidade de ter tanto código desnecessário. Para resolver a nossa tarefa inicial de mudar o Hello World para “Olá Mundo” usaremos a anotação que faz referência ao evento de uma view.

Quarto Passo: Evento

@OnClick(R.id.texto)
public void mudar(View view){
    texto.setText("Olá, Mundo");
}

Se tudo foi programado correctamente ao clicar o texto Hello World então poderás notar que de facto o texto muda para “Olá, Mundo”.

Esta foi uma breve introdução sobre o uso de ButterKnife. Espero que tenhas gostado!