监听器可以替换为lambda是什么意思?

问题描述 投票:49回答:3

我已经实现了一个AlertDialog与正常的负面和正面按钮点击监听器。

当我打电话给new DialogInterface.OnClickListener()时,它向我展示了一个建议:Anonymous new DialogInterface.OnClickListener() can be replaced with lambda。我知道这不是错误或大事,但这个建议究竟是什么,我能做些什么呢?

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

android lambda alertdialog android-alertdialog
3个回答
97
投票

这意味着您可以缩短代码。

没有lambda的onClickListener()的一个例子:

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

可以用lambda重写:

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

这是相同的代码。这在使用大量侦听器或在没有IDE的情况下编写代码时非常有用。有关更多信息,请查看this

希望这能回答你的问题。


3
投票

它很简单:

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

3
投票

使用lambda表达式替换经典的新DialogInterface.OnClickListener()实现就足够了

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

它只是采用onClick事件参数。

© www.soinside.com 2019 - 2024. All rights reserved.