RecyclerView Item에 버튼이나 체크박스가 있을때 발생되는 이벤트를 Adapter에서 처리 할수도 있겠지만, 어쩔수 없이

Activity에서 처리를 해야 할때도 있다...이럴때 구현하는 방법을 남겨본다...이렇게 라도 안하면...까먹어서..ㅠㅠ

내가 알고 있는 방법은 두가지가 있다. 첫번째를 Tag를 이용하는 방법과, 이벤트 리스너를 만들어서 하는 방법이 있는데,

이벤트 리스너를 만들어서 처리 하는 방법으로 남긴다.

우선 class가 하나 필요 하다.

(activity에 inner 클래스로 만들어도 된다.)

public class ListEventListener {

private OnViewItemClickListener onViewItemClickListener;

public interface OnViewItemClickListener{
public void onViewItemClick(Map<String, String> item);
}
}

리스트에 있는 특정 view에서 이벤트가 발생이 되면 해당 item에 대한 데이터 전체를 받을 거라서 인자값을 Map으로 했다..


Activity에서는 아래 처럼 이벤트가 발생 했을때 처리할 리스너를 구현해 준다.

ListEventListener.OnViewItemClickListener onViewClickListener =
new ListEventListener.OnViewItemClickListener() {
@Override
public void onViewItemClick(Map<String, String> item) {
Toast.makeText(OrderAddActivity.this, "이벤트 테스트", Toast.LENGTH_SHORT).show();
}
};

그리고 RecyclerView Adapter 생성자에 onViewClickListener를 넘겨주고

OrderAddAdapter adapter = new OrderAddAdapter(this, onViewClickListener);


Adapter에서는 아래처럼 이벤트가 발생했을때 인자로 넘긴 이벤트 리스너를 호출해 주면 Activity에 구현된 

이벤트 리스너가 실행이 된다...

holder.ivDelete.setOnClickListener { v ->

onViewClickListener.onViewItemClick(item)
}


알면 참 쉬운데...모르면 개고생 인듯...ㅡㅡ;;;

복사했습니다!