2015-06-10 22 views
28

Ho implementato uno AlertDialog con normali ascoltatori di clic del pulsante positivi e negativi. Quando ho chiamato new DialogInterface.OnClickListener() mi stava mostrando un suggerimento dicendo: Anonymous new DialogInterface.OnClickListener() can be replaced with lambda. So che non è un errore o qualcosa di grande ma qual è esattamente questo suggerimento e cosa posso fare al riguardo? Un piccolo aiuto sarebbe apprezzato!Listener può essere sostituito con lambda

EDIT

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

+0

Potrebbe aggiungere qualche parte del codice con questo? – Random

+1

contro quale versione di Android stai compilando? – Blackbelt

risposta

58

Ciò significa che è possibile abbreviare il vostro codice:

esempio di onClickListener()senza lambda:

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

può essere riscritta con lambda:

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

E 'lo stesso codice. Questo è utile quando si usa un sacco di ascoltatori o quando si scrive codice senza IDE. per ulteriori informazioni controllo this

Spero che questo risponda alla tua domanda.

+6

Ricorda solo che lambda è una funzione di Java 8 che non è supportata in Android. Se ti piace questa funzione usa retrolambda - https://github.com/evant/gradle-retrolambda – rwojcik

+0

Grazie per la tua risposta. Aiuta. –

+2

@rwojcik Lambda è supportato in Android – portfoliobuilder

1

La sua semplice come questo:

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

Funziona su Java 8? –

+0

@M Hornbacher Sì – Mark