본문 바로가기

Java and Android/Android Java

Android - 리스너

1.
//클래스이름이 없는 익명클래스의 인터페이스, 메소드도 정의만 되어있고 구현(implementation)이 안됨
//정의된 메소드의 내용을 채워주기를 기다린다는 의미에서 리스너
public  interface View.onClickListener(){
    public void onClick(View v);
}


2.
// 위에 정의한 인터페이스에 listner라는 클래스 이름을 주고 onClick메소드에 내용을 덮어써(override)구현  
  View.onclickListener listener = new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                drawer_Layout.openDrawer(drawer_view); 
            }
        }
  //listener이름을 준 클래스를 이벤트함수의 파라미터로 전달
  btn_open.setOnClickListener(listener);
  
  
  
  
 3.
 //익명 클래스를 바로 이벤트함수의 파라미터로 전달
 btn_open.setOnClickListener(new View.OnClickListener() { 
           @Override
           public void onClick(View v) {
               drawer_Layout.openDrawer(drawer_view); 
           }
       });
        
 

 

 

 

1.번의 인터페이스는 아래 책에서 출처된 글을 통해서 유추하여 내가 상상하여 만든 인터페이스

 

*아래글은 구글링결과 어느질문의 답변에서 어느 책의 내용으로부터 출처가 있는 글임

 

리스너(Listener)는 특정 이벤트를 처리하는 인터페이스이다. 이름 그대로 이벤트 발생 여부에 귀를 쫑긋 기울이고 있는 객체라고 할 수 있다. 리스너에 대응되는 이벤트를 받는 단 하나의 메서드가 선언되어 있으며 모두 View 클래스의 이너 인터페이스로 선언되어 있다. View 클래스의 내부 인터페이스로 OnCilckListener 인터페이스가 선언되고 있고 이 인터페이스는 onCLick라는 추상 메서드를 포함한다. 이 메서드를 이벤트 핸들러라고 부른다. 각 인터페이스에는 이벤트를 처리하는 추상메서드가 딱 하나씩만 선언되어 있고 구현은 없다. 인터페이스는 어디까지나 메서드의 껍데기만을 가진 선언체일 뿐이므로 그 자체가 이벤트를 받을 수는 없다. 다만 특정 이벤트를 처리하는 핸들러의 원형이 어떠해야 한다는 것을 강제할 뿐이다.

이벤트를 처리하려면 리스너를 구현하는 클래스를 선언하고 그 객체를 생성해야 한다. 클래스가 되려면 리스너의 추상 매서드인 핸들러를 구체적으로 구현해야 한다. 이렇게 구현된 객체를 리스너 객체라고 한다. 리스너를 구현한 다음에는 뷰에 이벤트가 발생핬을 떄 핸들러가 호출되도록 연결해야 한다. 구현만 해 놓는다고 해서 이벤트와 리스너가 자동으로 연결되는 것은 아니므로 어떤 리스너가 어떤 이벤트를 처리한다는 것을 등록해야한다. 등록 메서드는 리스너별로 따로 준비되어 있다.(set+리스너  등등)

 

인터페이스, 구현 등 정의 참조:www.charlezz.com/?p=768

 

안드로이드로 배우는 자바의 인터페이스 (콜백, 리스너, 옵저버) | 찰스의 안드로이드

Before diving into interface 초보 자바 개발자 분들의 단골로 하는 질문이 있습니다. “리스너(콜백)가 뭐에요?” 또는 “인터페이스가 뭔지 모르겠어요!!” 자바의 인터페이스에 대한 개념없이 리스

www.charlezz.com

 

'Java and Android > Android Java' 카테고리의 다른 글

Android- CustomNavigation  (0) 2020.11.24
Android - WebView  (0) 2020.11.20
Android - SharedPreferences  (0) 2020.11.20
Android - ListView  (0) 2020.11.17
Android - ImageView, Toast MSG,gravity  (0) 2020.11.17