4
4

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.

【Android】interfaceの例

Posted at

Android アプリを作るときに使う interface の具体的な例を紹介していきたいと思います。

interface の例

各種リスナー

  • OnClickListener
  • OnLongClickListener
  • OnTouchListener

このあたりのリスナーはView.javaで定義されています。
AndroidStudioなら、command + Bでクラスに定義されている場所に飛べるので、確認してみてください。

イベントリスナーと言われたりします。

スレッド

  • Runnable

マルチスレッドでプログラミングするときに使います。

参考: Android Developer プロセスとスレッド

書き方の例

OnClickListenerを例に紹介していきます。

匿名クラスを引数として渡す

Viewクラスの、setOnClickListenerメソッドに引数として interface を渡します。

Button button = new Button(this);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // button がクリックされた時の処理
    }
});

事前に変数に代入しておくこともできます。(やりませんが....)

Button button2 = new Button(this);
View.OnClickListener onClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // button がクリックされた時の処理
    }
};
button2.setOnClickListener(onClickListener);

ラムダ式を使う

準備

Java8 で実装された、新しい文法であるラムダをAndroid で使うには準備が必要になります。

こちらのサイトを参考に、

app/build.gradle
android {
  defaultConfig {
    ...
    jackOptions {
        enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

以上の2箇所を書き加えます。

このとき gradle-wrapper.properties で、gradle のバージョンが、2.1.0以上になっていることがが必要です。

ラムダ式で書く

Button button3 = new Button(this);
button3.setOnClickListener((View v)->{
    // button がクリックされた時の処理
});

最後に

「どうやって書くのがいいのか?」に対する明確な答えはなさそうです。

少し古い記事になりますが、

個人的には匿名クラスで書くのが好きで、AcitivytやFragmentにimplementsするのはあんまり好きじゃないです (オブジェクト指向的に変な気がするので...)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?