Подтвердить что ты не робот

Что это означает, что слушатель может быть заменен лямбда?

Я реализовал 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

4b9b3361

Ответ 1

Это означает, что вы можете сократить свой код.

Пример onClickListener() без лямбды:

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

можно переписать с помощью лямбды:

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

Это тот же код. Это полезно при использовании большого количества слушателей или при написании кода без IDE. Для получения дополнительной информации, проверьте это.

Надеюсь, что это ответ на ваш вопрос.

Ответ 2

Это так просто:

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

Ответ 3

Для замены классической новой реализации DialogInterface.OnClickListener() на лямбда-выражение достаточно следующего

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

Он просто принимает параметры события onClick.