Butter Knifeの使いかた

はじめに

毎日一つ、ライブラリを紹介するコーナーでも始めようかなと思って、これから頑張ってみようかなと思います。
最初に取り上げるのはButterKnifeからいきましょうか。

Butter Knifeとは

Jake Wharton先生の有名なライブラリです。

Butter Knife
Alt

レイアウト上に定義されたウィジェットをアノテーションでインジェクトできるので、コーディングが大変楽になります。
このライブラリを利用しない場合、テキストビューのテキストを設定するような場合には以下の様なコードを毎回1書く必要がありました。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText("Hello, World!");
}

キャストが必要だし、ちょっと冗長1です。
こちらが、Butter Knifeで以下のように記述できます。1

@Bind(R.id.textView)
public TextView mTextView;

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

    mTextView.setText("Hello, World!");
}

最初の2行で@Bindアノテーションによって定義されたmTextViewが、onCreateメソッド内で呼びだされているButterKnife#bindメソッドでインジェクトされるおかげで、対象のファイル内ではドコのメソッド上でもウィジェットのオブジェクトに対して操作を行うことが可能となります。
ウィジェットの操作はカナリのコード量となるので、これだけでも相当楽ですね。

Butter Knifeの利用方法1

Butter Knifeの利用方法1は、Android Studioのapp/build.gradle1に対して以下の一文を追記するだけです。

dependencies {
    compile 'com.jakewharton:butterknife:7.0.1'
}

※ 2016/04/23執筆時点のライブラリバージョンとなっています。最新版は 公式サイト で確認してください

その他の便利な使い方

Butter Knifeには、他にも便利な機能があります。

@Onclickアノテーション

ボタンのクリックイベントをonClickListenerインタフェース抜きで実現できます。
ライブラリなしの場合は以下のようになります。

Button button = (TextView) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        /* クリックされた時の処理を記述 */
    }
}

Butter Knifeを利用すると、以下のように記述できます。1

@OnClick(R.id.button)
public void onClickEvent(View view) {
    /* クリックされた時の処理を記述 */
}

大変スッキリ。Buttonでしたら、レイアウト内にandroid:onclick=”メソッド名”と書くことでイベントを設定できます[が、それも不要なので楽ちんです。
注意点としては、クリックイベントを受け取るために定義するメソッドは、名前は自由ですが、引数にViewを受け取り、戻り値がvoidというところだけ合わせておく必要があります。2

// 穴があったら入りたい。。。

それではよいAndroidライフを!


  1. 2016/04/25追記:@keiji_ariyamaさんから頂いたご指摘にあわせて、削除しました。ご指摘ありがとうございます。 
  2. 2016/04/24追記:すごい恥ずかしい話ですが、@OnClickアノテーションを使うときには引数にViewが必須だと思ってました。実は要らないんですね。。。@esmasuiさん、ご指摘ありがとうございました。 

「Butter Knifeの使いかた」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください