5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

独自リスナーの作り方

Last updated at Posted at 2018-06-14

#はじめに
あるクラスで処理を行ってその結果をActivityや別クラスに通知したい場合、どのようにすればよいか。
本記事では、独自でリスナーを作り、それを特定のクラスで受け取る例を書いていきます。

#リスナーとは
あるイベントが発生してくれたことを通知してくれるもの、

#登場人物

  • リスナー
    イベント発生通知をしてくれる。

  • インターフェース
    イベントの通知元と通知先の仲介役。基本的にインターフェースを通して通知先に通知する。

  • レシーバー
    イベントを受け取る。

#具体例

Calculation

public class CalculationListener {

    private ResultInterface listener;

    public Calculation(ResultInterface listener) {
        this.listener = listener;
    }

    public void calc(int a, int b) {
        int sum = a + b;
        this.listener.result(sum);
    }
}

ResultInterface

public interface ResultInterface {
    void result(int sum);
}

MainActivity

public class MainActivity extends AppCompatActivity implements ResultInterface {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Calculation obj = new CalculationListener(this);
        obj.calc(10,20);
    }

    @Override
    public void result(int sum) {
        String msg = String.valueOf(sum);
        Log.d("MainActivity", msg);
    }
}

もしくは

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Calculation obj = new CalculationListener(new ResultInterface() {
            @Override
            public void result(int sum) {
                String msg = String.valueOf(sum);
                Log.d("MainActivity", msg);
            }
        });
        obj.calc(10,20);
    }
}

結果

MainActivity: 30

解説

上記コードにおける、登場人物。

  • リスナー → CalculationListener
  • インターフェース → ResultInterface
  • レシーバー → MainActivity

ポイント

  1. CalculationListenerオブジェクト生成時、リスナー(CalculationListener)に通知先(MainActivity)を教えておく
  2. CalculationListenerで計算したあと、インタフェースを通して通知先に計算結果を教えてくれる。

まとめ

MainActivityを自分自身だとすると、自分の連絡先を警察に教えておき、財布がみつかったら教えた連絡先に電話してください。
のような感じ。

5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?