Was bedeutet es, dass ein Listener durch Lambda ersetzt werden kann?

Lesezeit: 2 Minuten

Benutzer-Avatar
Kavin Prabhu

Ich habe eine implementiert AlertDialog mit normalen negativen und positiven Button-Click-Listenern.

Als ich anrief new DialogInterface.OnClickListener() es zeigte mir einen Vorschlag, der sagte: Anonymous new DialogInterface.OnClickListener() can be replaced with lambda. Ich weiß, es ist kein Fehler oder etwas Großes, aber was genau ist dieser Vorschlag und was kann ich dagegen tun?

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

  • Könnten Sie damit einen Teil Ihres Codes hinzufügen?

    – Zufällig

    10. Juni 2015 um 9:36 Uhr

  • Gegen welche Android-Version kompilieren Sie?

    – Schwarzer Gürtel

    10. Juni 2015 um 9:40 Uhr

Benutzer-Avatar
Streicher

Das bedeutet, dass Sie Ihren Code verkürzen können.

Ein Beispiel für onClickListener() ohne Lambda:

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

kann umgeschrieben werden mit Lambda:

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

Es ist der gleiche Code. Dies ist nützlich, wenn Sie viele Listener verwenden oder Code ohne IDE schreiben. Weitere Informationen finden Sie unter Dies.

Hoffe das beantwortet deine Frage.

  • Denken Sie daran, dass Lambda eine Java 8-Funktion ist, die in Android nicht unterstützt wird. Wenn Ihnen diese Funktion gefällt, verwenden Sie Retrolambda – github.com/evant/gradle-retrolambda

    – rwojcik

    10. Juni 2015 um 9:49 Uhr


  • @rwojcik Lambda wird in Android unterstützt

    – Portfoliobuilder

    26. Juni 2015 um 17:04 Uhr

  • @Strider Was ist passiert, wenn ich eine andere Methode innerhalb des Listeners hinzufügen möchte? Wie kann ich es schreiben?

    – emaleavil

    26. November 2015 um 9:33 Uhr

  • Android N hat damit begonnen, Java 8 zu unterstützen Lambda wird jetzt offiziell unterstützt.

    – Eisenblüte

    1. April 2016 um 15:29 Uhr

  • Und Sie müssen „android.view.View“ oder „android.view.View.OnClickListener“ nicht für Klick-Listener importieren.

    – Arash

    29. März 2018 um 11:04 Uhr

So einfach ist es:

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

  • @M Hornbacher Ja

    – Markieren

    27. Mai 2017 um 19:57 Uhr

Um die klassische neue DialogInterface.OnClickListener()-Implementierung durch einen Lambda-Ausdruck zu ersetzen, genügt Folgendes

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

Es nimmt nur die Parameter des onClick-Ereignisses.

1246770cookie-checkWas bedeutet es, dass ein Listener durch Lambda ersetzt werden kann?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy