Binding dei componenti visuali in Android con Butter Knife

Binding dei componenti visuali in Android con Butter Knife

Il binding dei componenti visuali in Android non è di per sè complicato, in quanto possiamo fare tutto con il metodo findViewById.

Però ho scoperto una libreria che ci permette di fare queste operazioni in una maniera più easy ancora: Butter Knife!

Non so se comporta miglioramenti anche a livello di prestazioni, ma secondo me riduce il codice scritto e lo rende un pò più chiaro.

Per usarlo dobbiamo aggiungere queste due righe tra le dipendenze di gradle:

dependencies {
    ......
	
    /* BUTTER KNIFE */
    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

Poi abbiamo questo semplice layout:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mattepuffo.test.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</android.support.constraint.ConstraintLayout>

Infine nella nostra Activity:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

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

    @BindView(R.id.button)
    Button btn;

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

    @OnClick(R.id.button)
    public void clikkato() {
        tv.setText("CIAO!");
    }
}

Come vedete, con questa libreria usiamo le annotazioni, facendo il binding globale nel metodo onCreate.

Le annotazioni riguardano anche gli eventi, oltre ai componenti in se; e se guardate tra gli esempi su GitHub potete vedere altre cose interessanti.

Enjoy!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2612 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy