Androidプログラミング-ButterKnife¶
はじめに¶
レイアウトファイルに定義したビュー部品とソースコード上のビューインスタンスをバインド(インジェクション)するライブラリの一つがButterKnifeです。イベントハンドラーメソッドのバインド、リソースと変数(フィールド)のバインドも可能です。バインドの定義はアノテーションを使います。コンパイル時にコードを生成するので実行は速やかです。
また、ビュー側に特化しており軽量コンパクト(ライブラリもJARファイル1つ)です。
公式サイト¶
http://jakewharton.github.io/butterknife/
効果¶
ビューの処理で冗長なコードを書く手間を削減します。
レイアウトファイルに定義したビュー部品の参照をアクティビティクラスのフィールドに紐付け¶
activity_main.xml に次のIDでEditTextを配置
<EditText android:id="@+id/title_edittext" ... />
MainActivity.java で@Bindアノテーションを付けたフィールドにEditTextインスタンスをインジェクション
public class MainActivity extends Activitiy {
@Bind(R.id.title_edittext)
EditText titleEdit;
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input);
ButterKnife.bind(this);
}
:
}
onCreateでレイアウトファイルを適用した後に、bindでインジェクションを実施します。
レイアウトファイルに定義したビュー部品で発生したイベントをアクティビティクラスのインスタンスメソッドに紐付け¶
public class MainActivity extends Activitiy {
@Bind(R.id.submit_button)
Button submittButton;
:
@OnClick(R.id.submit_button)
public void submit() {
:
}
}
リソースを取得¶
strings.xml に次のIDでStringリソースを記述
<string name="title_null_message">タイトルは必ず入力してください。</string>
public class MainActivity extends Activitiy {
@BindString(R.string.title_null_message)
EditText titleNullMessage;
:
}