web-dev-qa-db-ja.com

リスナーをラムダに置き換えることができるとはどういう意味ですか?

AlertDialogを実装し、通常のネガティブおよびポジティブボタンクリックリスナーを使用しました。

new DialogInterface.OnClickListener()を呼び出したときに、Anonymous new DialogInterface.OnClickListener() can be replaced with lambdaという提案が表示されていました。私はそれがエラーでも大きなものでもないことを知っていますが、この提案は正確に何であり、私はそれについて何ができますか?

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton("Text", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // do something here
    }
});

Android Studio V1.2.1.1 compileSdkVersion 22 buildToolsVersion "22.0.0" minSdkVersion 14 targetSdkVersion 22

56
Kavin Prabhu

つまり、コードを短縮できます。

onClickListener()withoutラムダの例:

mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // do something here
    }
});

書き換え可能withlambda:

mButton.setOnClickListener((View v) -> {
    // do something here
});

同じコードです。これは、多数のリスナーを使用する場合、またはIDEなしでコードを記述する場合に役立ちます。詳細については、 this を確認してください。

これがあなたの質問に答えることを願っています。

103
Strider

これと同じくらい簡単です:

button.setOnClickListener(view -> username = textView.getText());
3
LEMUEL ADANE

古典的な新しいDialogInterface.OnClickListener()実装をラムダ式で置き換えるには、次のもので十分です。

 builder.setPositiveButton("resourceId", ((DialogInterface dialog, int which) -> {
      // do something here
 }));

OnClickイベントパラメータを取得するだけです。

3
Gabriel Perez