LoginSignup
3
3

More than 5 years have passed since last update.

AndroidでListenerを書かないイベントハンドリング

Last updated at Posted at 2016-10-06

イベントハンドリングのためのRxBusとは?

今までリスナーでイベントをハンドリングしていたものを、どこからでも、どこでもハンドリングできるようにする方法。

下ごしらえ

RxBusProviderというものを作成しておきます。
http://qiita.com/yyaammaa/items/57d8baa1e80346e67e47

使い方

イベント作成:空で大丈夫です。引数もOK。わかりやすいようにクリックイベントにしてみます。

public class OnClickEvent{
  View v;
  public OnClickEvent(View v){ this.v = v; }
}

イベント送信:これを書いた場所どこからでも送れるみたいです。

RxBusProvider.getInstance().send(new OnClickEvent(v))

イベント受信:これを書いた場所全部で拾ってしまいます。

RxBusProvider.getInstance().toObservable()
.subscribe(o -> {
  if(o instanceof OnClickEvent ){
    // ここでハンドリング
    v.setText("おされた");
  }
})

補足

Fragmentを使いまわすような構造にしていると、全部でハンドリングされてしまいます。全部で拾わないためにはC#風にsenderとthisと比較すればいいのかな...

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