カテゴリー:
仕組み
閲覧数:658 配信日:2013-04-20 11:40
イベントリスナーとは?
イベントが発生した際、「そのイベントに対応して呼ばれるよう用意されたメソッド」を持つインターフェイス、またはその実装クラスのこと
※イベントハンドラも同義
2種類あるため、文脈に応じて下記何れに該当するか読み取る必要がある
1.元々用意してある「イベントに対応するメソッドを持つインターフェイス」
2.その実装クラス
1.インターフェイス
・「イベントに応じて、呼び出すメソッドを予め定義している」インターフェイス
・特定の「 オブジェクト 」からの「 イベント 」の発生を監視し続け、「 イベント 」発生と共に「Data」が伝達されれば、必要な処理を実行する
オンクリック・リスナー(android.view.View.OnClickListener)
・ユーザーが「ボタン」を押す時に「イベントが発生」
ロケーション・リスナー(LocationListener)
・ユーザーの「端末の位置が変化」する度に「イベントが発生」し、その「 イベント情報」と「位置情報」が伝達される事により、地図上に本端末の位置を表示する事が可能となる
イベントリスナが持っているコールバックメソッド例
・onClick()
・onLongClick()
・onFocusChange()
・onKey()
・onTouch()
・onCreateContextMenu()
2.実装クラス
・上記「1」の実装クラス
Activityクラス
・onCreateメソッドなど、特定のイベントが発生したら呼ばれるメソッドが予め定義されている
イベント·リスナーの考え方
・「キーが入力された」「マウスがクリックされた」といった「イベント」が発生する場合、そのイベント対応処理をする必要が生じる
・しかし、その都度全部作り直していくのは非効率的
・そこで、ライブラリ側(Android API)はイベントに対応するメソッドを持つインターフェイスを作成し、そのインターフェイスの実装クラスを渡せるようにしておく
・例えば、Viewに、onClickなどというイベント用メソッドはない
・onClickは、View.OnClickListenerにある
・使うためには、View.OnClickListenerをimplements
・すると、クリックしたときにonClickが呼び出されるようになる
・implementsしていなければ、クリックしても何も起こらない。ただ、「クリックした」というイベントが素通りしてしまうだけ
・つまり、コンポーネント類は、基本的に初期状態では「何のイベントも認識しない」
・このコンポーネントに、イベントリスナーを追加することで、そのイベントをコンポーネントが受け取れるようになる
利用の仕方
1.「インターフェイスをオーバーライドした(メソッドを実装した)クラス」を作成
2.このクラスのインスタンスへの参照を渡す
3.イベントが発生した際、オーバーライドしたメソッドが呼び出される
※ポリモーフィズムを利用することで「イベントの処理をするメソッドのみを作る」ようにしている