web-dev-qa-db-fra.com

Qu'est-ce que cela signifie qu'un auditeur peut être remplacé par lambda?

J'ai implémenté un AlertDialog avec des écouteurs de clic négatif et positif normaux.

Quand j’ai appelé new DialogInterface.OnClickListener(), il m’a montré une suggestion disant: Anonymous new DialogInterface.OnClickListener() can be replaced with lambda. Je sais que ce n'est pas une erreur ou quelque chose de grave, mais en quoi consiste exactement cette suggestion et que puis-je faire à ce sujet?

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

Cela signifie que vous pouvez raccourcir votre code.

Un exemple de onClickListener() sans lambda:

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

peut être réécrit avec lambda:

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

C'est le même code. Ceci est utile lorsque vous utilisez beaucoup d'auditeurs ou lorsque vous écrivez du code sans IDE. Pour plus d'informations, consultez this .

J'espère que ça répond à ta question.

103
Strider

C'est aussi simple que cela:

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

Pour remplacer la nouvelle implémentation classique DialogInterface.OnClickListener () par une expression lambda, il suffit de:

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

Il ne prend que les paramètres d'événement onClick.

3
Gabriel Perez