본문 바로가기
Study Log/Software Engineering

데이그램 따라하기 - 3. 커스텀 리스너 인터페이스

by HZie 2020. 8. 19.

하단 네비게이션바 만들기 (2) 커스텀 리스너 인터페이스

공부한 것 정리

리사이클러뷰 외부에서 아이템 클릭 이벤트 처리
  1. 어댑터에서 이벤트 리스너 인터페이스를 작성한다.

// 1. 커스텀 인터페이스 정의
public interface OnItemClickListener{
	void onItemClick(View v, int pos);
}

// 2. 리스너 객체를 전달하는 메소드와 전달된 객체를 저장할 변수 추가
private OnItemClickListener mListener = null;
public void setOnItemClickListener(OnItemClickListener listener){
	this.mListener = listener;
}

// 3. 아이템 클릭 이벤트 핸들러 메소드에서 리스너 객체 메소드 호출
// 다음은 뷰홀더 클래스 안에서 작성한다.
itemView.setOnClickListener(new View.OnClickListener(){
	@Override
    public void onClick(View v){
    	int pos = getAdapterPosition();
        if(pos != RecyclerView.NO_POSITION){
        	if(mListener != null){
            	mListener.onItemClick(v,pos);
            }
        }
    }
}


  2. 리스너를 사용할 곳(액티비티 or 프래그먼트)에서 리스너 객체를 생성하고 어댑터에 전달하여 호출한다.
     --> 커스텀 리스너라고 한다

// 4. 액티비티에서 커스텀 리스너 객체 생성 및 전달
void onCreate(...){
	...
	
	AdapterName adapter = new AdapterName();
	adapter.setOnItemClickListener{
    	new AdapterName.OnItemClickListener(){
        	@Override
            public void onItemClick(View v, int pos){
            	// 클릭 이벤트에서 처리할 코드 작성
            }
        }
    }
}


  --> 자식(어댑터)이 부모(액티비티)의 이벤트 핸들러를 호출할 때 사용한다.

출처: https://recipes4dev.tistory.com/168?category=790402

 

 

 

댓글