3
2

More than 1 year has passed since last update.

【Android Java】リスナーを脳みそに叩き込む

Posted at

リスナーを毎回ググってた

私は、リスナーを実装するときに毎回ググっていたのですが、
リスナーくらいは空で書けるようになりたいな、と思って実装手順を叩き込みたいと思いました。

初学者にとって最初につまずくポイントなんじゃないでしょうか。
リスナーの説明で、よく、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!");
                // ここにカスタムイベントが発生した際の追加処理を記述
                // 例: 画面の更新、データベースの操作など
            }
        });

おわりに

エンジニアはググってなんぼ!らしいけど、リスナーくらいは空で書きたい。

がんばるぞい!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2