リスナーを毎回ググってた
私は、リスナーを実装するときに毎回ググっていたのですが、
リスナーくらいは空で書けるようになりたいな、と思って実装手順を叩き込みたいと思いました。
初学者にとって最初につまずくポイントなんじゃないでしょうか。
リスナーの説明で、よく、onclickListener
を例に説明がされますが、既存のlistenerを例に出されてもよくわかんないなと、思ってたので、今回は、自分で作るカスタムリスナーを例に説明していきます。
この流れさえ覚えちゃえばOK!リスナー実装手順を覚える
1 インターフェースを作成する
2 リスナーを実装する
3 リスナーオブジェクトを作成し、リスナーと関連付ける
4 イベントが発生した際の処理を記述する
リスナー実装の手順を箇条書きで詳細に
1 インターフェースを作成する
- リスナーのインターフェースを作成する
- このインターフェースには、リスナーが実装するメソッドが含まれる (今回は
onCustomEvent()
というメソッドを作ることにした)
// MyCustomListener.java
public interface CustomListener {
void onCustomEvent();
}
2 リスナーを実装する
- リスナーのインターフェースを実装するクラスを作成する
- このクラスには、イベントが発生した際に実行される処理が含まれる
public class EventProducer {
// カスタムリスナーを格納する変数
private CustomListener customListener;
// リスナーをセットするメソッド
public void setCustomListener(CustomListener listener) {
this.customListener = listener;
}
// イベントを発生させるメソッド
public void performAction() {
// 何かのアクションを実行した後
if (customListener != null) {
customListener.onCustomEvent(); // カスタムイベントをトリガー
}
}
}
3 リスナーオブジェクトを作成し、リスナーと関連付ける
- リスナーオブジェクトを特定のコンポーネントやイベントに関連付ける
- このオブジェクトは、リスナーのインターフェースを実装したクラスのインスタンスのこと
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// リスナーオブジェクトを作成
EventProducer eventProducer = new EventProducer();
// カスタムリスナーをセットアップ
eventProducer.setCustomListener(new CustomListener() {
@Override
public void onCustomEvent() {
// カスタムイベントが発生したときの処理
// この例ではログにメッセージを出力し、任意のアクションを実行します
Log.d("MainActivity", "Custom event occurred!");
// ここにカスタムイベントが発生した際の追加処理を記述
// 例: 画面の更新、データベースの操作など
}
});
// 何かのアクションを実行してカスタムイベントをトリガー
eventProducer.performAction();
}
}
4 イベントが発生した際の処理を記述する
- 2で実装したリスナーのメソッドの中で、行いたい処理を記述することで、完成!
// カスタムリスナーをセットアップ
eventProducer.setCustomListener(new CustomListener() {
@Override
public void onCustomEvent() {
// カスタムイベントが発生したときの処理
// この例ではログにメッセージを出力し、任意のアクションを実行します
Log.d("MainActivity", "Custom event occurred!");
// ここにカスタムイベントが発生した際の追加処理を記述
// 例: 画面の更新、データベースの操作など
}
});
おわりに
エンジニアはググってなんぼ!らしいけど、リスナーくらいは空で書きたい。
がんばるぞい!