スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Android】ButterKnifeを使ってみた

はじめに

アプリケーションのViewの最適化をする際に、LinearLayoutで実装していたところをRelativeLayoutにしたり、ImageViewにしていた箇所をTextViewにしたりとViewの入れ替えをすることがあるかと思います。
しかし、その度に「layoutファイルを変えて、Fragmentのインスタンス変数の型を変えて、findViewByIdでマッピングする箇所のキャストを変えて...」みたいな事をやるのが大変ですよね。特に最後のfindViewByIdのところです。
Viewを入れ替える時のみならず、普段からももっと楽したいですよね。
そう考えていたらButterKnifeというライブラリに出会ったので試しにいじってみました。

導入方法

Gradle
compile 'com.jakewharton:butterknife:5.1.1'

導入例

ButterKnifeを使う前

public class TestFragment extends Fragment {
    EditText ageEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_input_initial, container, false);
        ageEditText = (EditText) view.findViewById(R.id.age);
        return view;
    }
}
InflateしたViewからfindViewByIdで特定のViewパーツにアクセスしてインスタンス変数に代入しています。

ButterKnifeを使った後

public class InputInitialFragment extends Fragment {
    @InjectView(R.id.age)
    EditText ageEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_input_initial, container, false);
        ButterKnife.inject(this, view);
        return view;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        ButterKnife.reset(this);
    }
}
ButterKnife.injectという処理でButterKnifeを使う前のような代入処理が行われています。この例だと代入するものが一つだけなのでそこまでメリットは感じられませんが、扱うViewがたくさんある場合にはかなり違いは出てきそうです。なお、FragmentでButterKnifeを使う場合はonDestroyViewでButterKnife.resetを呼び出す必要がありそうです。

おわりに

やっぱりfindViewByIdでViewと変数を紐付けるコードを書かなくてもよくなるのは非常にラクですね。 また、findViewByIdの直後でキャスト処理を明示的に書かなくてよくなったことで、Viewのクラスを変更したりする時も効率化できそうです。
スポンサーサイト

Tag:Android  Trackback:0 comment:2 

Comment

 |承認待ちコメント
# 2014.07.29 Tue22:40
このコメントは管理者の承認待ちです
 |承認待ちコメント
# 2014.08.11 Mon06:41
このコメントは管理者の承認待ちです
comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。