Butter Knife: librería para inyectar views (vistas) en Android

noviembre 16, 2015

Butter Knife es una librería que nos facilitará la tarea de relacionar los elementos de las vistas con el código en nuestras aplicaciones Android. Nos evitará tener que utilizar findViewById y simplificará el código. Lo vemos más fácil con un ejemplo.

Tenemos un layout llamado main_activity.xml con la siguiente estructura:

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/my_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

En nuestro código, podremos utilizar la librería Butter Knife de esta forma para inyectar el TextView:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends Activity{
 
    @Bind(R.id.my_textview) TextView myTextview;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        ButterKnife.bind(this);
 
        myTextview.setText("Texto de ejemplo");
    }
}

No solo podemos utilizar Butter knife para inyectar vistas, también ofrece otro tipo de anotaciones para manejar eventos como OnClick(), OnLongClick(), etc.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MainActivity extends Activity{
 
    @Bind(R.id.my_textview) TextView myTextview;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        ButterKnife.bind(this);
 
        myTextview.setText("Texto de ejemplo");
    }
 
    @OnClick(R.id.my_textview)
    public void submit() {
        Toast.makeText(this, "Pulso sobre el TextView", Toast.LENGTH_LONG).show();
    }
}

Para instalar Butter Knife solo tendremos que añadir la siguiente dependencia al archivo build.gradle del proyecto:

compile 'com.jakewharton:butterknife:7.0.1'

Butter Knife tiene varias opciones más muy recomendables y que harán que la programación de aplicaciones Android sea mucho sencilla. Recomiendo echar un vistazo a la página oficial de Butter Knife para ver el resto de funcionalidades.

Tags ; , , , , ,

2 comentarios

    Nahumfg Abr 21, 2016

    Saludos amigo, pasa que tengo un problema con butterknife. Al agregar la línea tal como dices, el Android Studio me tira un error que dice así: Failed to resolve: com.jakewharton:butterknife:7.0.1 y abajo me da un hipervínculo que dice: Open File pero no funciona, no lo puedo presionar, no abre nada…

    Responder
    Alex Jul 26, 2016

    al final de la pagina oficial encontraras siempre la versión mas actualizada

    http://jakewharton.github.io/butterknife/

    ej: compile ‘com.jakewharton:butterknife:8.2.1’

    recuerda a copiarlo dentro del fichero build.gradle (app!!) en dependencies

    ej:
    dependencies {

    compile ‘com.jakewharton:butterknife:8.0.1’
    }

    luego toca Sync Now y confirma que NO sale ningun error!!

    Responder

Escribe un comentario

Los comentarios son moderados y se utiliza rel="nofollow" para los enlaces.