【Android】ラムダ式でonClick()を実装する方法


前書き

先日の記事で初心者向けに、

クリックイベントを検知するonClick()の実装方法

を紹介しました。

とても基本的な内容となっています。

今回の記事では、少しレベルアップして、

ラムダ式でonClick()を実装する方法を紹介します。


1.Android Studio でラムダ式を有効にする

ラムダ式は、Java 8 から追加した新しい文法となっています。

Android Studio ではデフォルトで Java 7 を採用しているため、

設定をしておかないとラムダ式の文法を認識してくれません。

こちらの手順を踏んで、お使いのAndroid Studioでラムダ式を有効にしましょう。


1. [File]タブから[Project Structure]を選択


2.[Modules]タブで[Source Compatibility][Target Compatibility][1.8 (Java 8)]に設定


[Apply]で適用した後[OK]

これでAndroid Studio のJavaバージョンが Java 8 になり、ラムダ式を使えるようなりました。


2.ラムダ式の基礎

ラムダ式は、匿名クラスの実装から、記載を省略したものになります。

一般的な構文はこのようになります。

(引数1, 引数2, ...) -> {
    //具体的な処理
}

引数が一つの場合は、引数ブロックの()を省略することもできます。

引数の型は、Javaが推測してくれるため記載しなくて問題ありません。

引数ブロックと処理ブロックを結ぶ -> は、弓矢に似ている形からアロー演算子と呼びます。


3.ラムダ式でonClick()を実装したサンプルコード

では実際に、onClick()をラムダ式で実装したサンプルコードを見てみましょう。

元となっているコードは

「クリックイベントを検知するonClick()の実装方法」

この記事の、2.匿名クラスを作成する です。

是非見比べてみてください。

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = findViewById(R.id.test_text);
        Button testButton = findViewById(R.id.test_button);

        testButton.setOnClickListener(view -> {
            Log.d(TAG, "Test button pressed!");
            mTextView.setText("TestButtonのクリック検知!");
        });
    }
}

引数は view です。引数ブロックの()は引数が view 一つのため省略します。

view の型であるViewはJavaによって推測されるため省略します。

アロー演算子 -> の後の処理ブロック{}で具体的な処理を記載します。

もちろんこの処理ブロック{}内で、引数 view を使った view.getId() などの実装もできます。

シンプルな匿名クラスの実装が、ラムダ式を使用することによりさらにシンプルになりました。

こちらのコードを実装し、ボタンを押下すると下の写真のような結果となります。


まとめ

ラムダ式の基本的な実装方法は理解できたでしょうか?

見慣れない構文に最初はびっくりすると思いますが、基礎を抑えておくと、

一つずつ分解して、何をやっているか理解できるようになります。

メリット:シンプルな上級者っぽいコードを書ける

デメリット:初心者にはとっつきづらい

両面を含んでいるので、

使い所を見極めて、モダンなラムダ式を実装していきましょう!

ご精読ありがとうございました!!

【Android】ラムダ式でonClick()を実装する方法」への1件のフィードバック

  1. ピンバック: 【EditText】Androidでの入力受付方法 シンプルな実装例付き | Memento Mori Blog

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です