« android版「コトバトコ」できました | メイン | 「Facebookページプロフェッショナルガイド」が出ます!! »

2011年6月 2日

Javaのイベントリスナをどう書く?

androidのアプリ開発をしてると、画面のUI部品のイベントを受け取るイベントリスナを書くことになるわけですが、これ、書き方によっては、やたらonCreateメソッドが長くなっちゃっていやだーなと思っていたのです。

で、調べてみたら、

blog lesson 01 - Javaのイベントリスナの書き方についての考察

こんなエントリを見つけました。
でも、どれもonCreateの中に書いてあって、やっぱ、そういうもんなのかなーと思ったりもしたのですが、Facebookで友人に教えてもらいつつ、外側に出す方法を考えてみました。

private OnClickListener myListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // ボタンクリックの処理
    }
};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    findViewById(R.id.button1).setOnClickListener(myListener);
    findViewById(R.id.button2).setOnClickListener(myListener);
    findViewById(R.id.button3).setOnClickListener(myListener);
}

まず、変数自体をonCreateの外に出しちゃう。
すっきりする!!

private class MyOnClickListener implements OnClickListener {
    @Override
    public void onClick(View v) {
        // ボタンクリックの処理
    }
}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    findViewById(R.id.button1).setOnClickListener(new MyOnClickListener());
}

これは、それぞれのリスナをクラスとして定義しちゃう。
個々のイベントを扱うクラスがたくさんできちゃうけど、メンテナンス性は良さそう。

Javaだとこういうときどう書いたらいいのかわからないの......。
どこかにベストプラクティス的なものありませんかねぇ。

投稿者 CHEEBOW : 2011年6月 2日 16:52 このエントリーを含むはてなブックマーク

[ android ]
【お知らせ】音楽に関することはこちらのブログで書いています。くじら音楽部::BLOG