LoginSignup
4
4

More than 5 years have passed since last update.

[Android] リスナーに値を保持させる

Posted at

イベントリスナーの登録方法、いろいろあると思います。

参考:
イベントリスナー実装のベストプラクティスはなんだろう
美しいOnClickListenerの実装方法(を教えてください)

この中で、クラスを定義する(匿名クラスでなく)方法だと、リスナー内に何かしらの値を保持させることが出来ます。

匿名クラスだとコンストラクタが定義できないし、後から値をセットとかが出来ないため。

リスナーは"インタフェース"なので、クラスを定義する場合は次のように implements し、オーバーライドで "実装" を行います。下記は View の OnClickListener の例です。

class HogeClickListener implements View.OnClickListener {
    private int mIntHoge;

    // コンストラクタ
    public HogeClickListener(int intHoge) {
        this.mIntHoge = intHoge;
    }

    @Override
    public void onClick(View v) {
        // ...
    }
}

この例だとコンストラクタで値を渡していますが、 "Setter" を通して渡しても良いかと思います。

上記のようにリスナーの"インタフェース"の"実装"を持つクラスは、次のように普通にリスナーとして利用できます。new する際に引数を渡してみます。

hogeView.setOnClickListener(new HogeClickListener(intHoge));
4
4
2

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
4
4