イベントリスナーの登録方法、いろいろあると思います。
参考:
イベントリスナー実装のベストプラクティスはなんだろう
美しい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));