I have implemented an AlertDialog
with normal negative and positive button click listeners.
When I called new DialogInterface.OnClickListener()
it was showing me a suggestion saying: Anonymous new DialogInterface.OnClickListener() can be replaced with lambda
. I know it's not an error or something big but what exactly is this suggestion and what can I do about it?
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
If you want to replace all the lambda expression from the project you can try Ctrl + Shift+ Alt + I on inspection search tab, search anonymous type can be replaced with lambda. It will replace all the anonymous type to lambda. With Studio 3.5.
Since the most common use of Anonymous class is to provide a throwaway, stateless implementation of abstract class and interface with a single function, those can be replaced by lambda expressions, but when you have a state field or implementing more than one interface, you cannot use lambdas to replace the anonymous ...
It means that you can shorten up your code.
An example of onClickListener()
without lambda:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do something here
}
});
can be rewritten with lambda:
mButton.setOnClickListener((View v) -> {
// do something here
});
It's the same code. This is useful when using a lot of listeners or when writing code without an IDE. For more info, check this.
Hope this answers your question.
Its as simple as this:
button.setOnClickListener(view -> username = textView.getText());
To replace the classic new DialogInterface.OnClickListener() implementation with lambda expression is enough with the following
builder.setPositiveButton("resourceId", ((DialogInterface dialog, int which) -> {
// do something here
}));
It´s just taking the onClick event parameters.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With