IT Share you

리스너가 람다로 대체 될 수 있다는 것은 무엇을 의미합니까?

shareyou 2020. 12. 15. 20:27
반응형

리스너가 람다로 대체 될 수 있다는 것은 무엇을 의미합니까?


나는 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


이는 코드를 줄일 수 있음을 의미합니다.

람다 onClickListener() 없는:

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

다시 쓸 수 람다 :

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

같은 코드입니다. 많은 리스너를 사용하거나 IDE없이 코드를 작성할 때 유용합니다. 자세한 내용은 이를 확인 하십시오 .

이것이 귀하의 질문에 답하기를 바랍니다.


다음과 같이 간단합니다.

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

고전적인 새 DialogInterface.OnClickListener () 구현을 람다 식으로 바꾸려면 다음으로 충분합니다.

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

그것은 단지 onClick 이벤트 매개 변수를 취하는 것입니다.

참조 URL : https://stackoverflow.com/questions/30752547/what-does-it-mean-that-a-listener-can-be-replaced-with-lambda

반응형