android lambda alertdialog android-alertdialog

android - ¿Qué significa que un oyente puede ser reemplazado por lambda?



alertdialog android-alertdialog (3)

He implementado un AlertDialog con AlertDialog normales de clic negativo y positivo.

Cuando llamé al new DialogInterface.OnClickListener() me estaba mostrando una sugerencia que decía: El Anonymous new DialogInterface.OnClickListener() can be replaced with lambda . Sé que no es un error o algo grande, pero ¿qué es exactamente esta sugerencia y qué puedo hacer al respecto?

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


Es tan simple como esto:

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


Para reemplazar la nueva implementación clásica de DialogInterface.OnClickListener () con la expresión lambda es suficiente con lo siguiente

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

Solo está tomando los parámetros del evento onClick.


Significa que puede acortar su código.

Un ejemplo de onClickListener() sin lambda:

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

se puede reescribir con lambda:

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

Es el mismo código. Esto es útil cuando se usan muchos oyentes o cuando se escribe código sin un IDE. Para más información, mira this .

Espero que esto responda a su pregunta.