ButterKnife

butterknife

Introduction

Je vais vous présenter une nouvelle librairie aujourd’hui, mais je vais vous poser une petite question avant dont je donnerais la réponse à la fin de cet article.

La question est la suivante : “Qui a développé la librairie Butter Knife ?”.  Un petit indice ? C’est une personne bien connu de notre site, on ne fait que de parler de ses libraires.
Maintenant que notre petit jeu est lancé, passons à la présentation de la librairie.

Objectif

L’objectif de Butter knife est de venir remplacer les findViewById qui permettent je le rappelle de récupérer une vue dans son activity ou fragment.

View view = findViewById(R.id.id_view);

Tout d’abord, il est nécéssaire de l’importer dans notre projet, de préférence en utilisant gradle (je vous invite à suivre le tutoriel maitriser-gradle-partie-1 si vous n’êtes pas habitué à l’outil). Pour cela, il vous suffit d’ajouter la ligne suivante à vos dépendances :

compile'com.jakewharton:butterknife:7.0.0'

Une fois cette librairie importée, regardons comment l’utiliser.

Utilisation

@Bind

L’utilisation de la librairie est très simple, elle se base sur les annotations. La principale annotation de cette librairie est @Bind

Alors comme dit plus haut cette annotation est là pour remplacer le findViewById. Pour récupérer une vue dans une activity, nous allons avoir besoin dans un premier temps d’initialiser la librairie. Rien de plus simple, il faut rajouter ButterKnife.bind(this); dans l’activity après l’avoir associé à votre layout. Un petit exemple sera surement plus parlant.

  @Bind(R.id.title) TextView title;
  
  @Override 
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.simple_activity);
      ButterKnife.bind(this);
      // TODO Use "injected" views...
  }

Et la question que tout le monde se pose et si on n’est pas dans une activity, on fait comment ? Bah le créateur secret de notre librairie a pensé à tout, merci à lui.

Que ce soit dans un fragment ou dans une vue personnelle , ButterKnife et aussi utilisable (heureusement). Comment ? Son utilisation est quasi équivalente à celle dans une activity, il faut seulement préciser à l’initialisation la vue dans laquelle ButterKnife doit s’injecter. Par exemple

ButterKnife.bind(this,rootView);

Plutôt simple non ?

@OnClick

Une autre annotation que j’apprécie bien est le @OnClick. Je pense que vous avez trouvé  son utilité ?
Et oui, elle est bien là pour remplacer le View.OnClickListener. Petit rappelle, pour rajouter un onClick sur une vue

myView.setOnClickListener(new View.OnClickListener() {
 @Override
    public void onClick(View view) {
        
    }
});

Maintenant comparons avec l’utilisation de la librairie. Il suffit juste dans votre activity de rajouter une méthode précéder de l’annotation @OnClick avec comme paramètre l’id de la vue que l’on souhaite clickable. Simple non, un exemple pour que ce soit plus clair ?

@OnClick(R.id.my_view)
void maMethodeClickable()
{
// Action lors du clic sur my_view
}

Vraiment convaincu non ? Pour ma part je trouve que ça rend le code un peu plus propre et lisible. Un autre exemple, pour vous montrer que l’on peu aller encore plus loin avec le onClick. On va maintenant passer plusieurs ids et avoir notre vue en paramètre !

@OnClick({R.id.my_view_1,R.id.my_view_2,R.id.my_view_3})
void clicView(View view)
{
}

Pratique et clair, plus qu’à retrouver ça dans vos prochains codes 😀

Il reste d’autres annotations dans cette librairie, mais je vous laisse les découvrir par vous même. Voici le lien officielle : ButterKnife

Je vous joins aussi un projet exemple que vous pouvez retrouvez à l’adresse suivante : github

J’allez oublier, la personne qui a développé cette libraire n’est autre que Jake Wharton

Un commentaire sur “ButterKnife

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *