본문 바로가기
Language/Android

[Android] 안드로이드_리사이클러뷰(RecyclerView_v7) - 클릭 이벤트 처리 ( Click Event )

by 썸머워즈 2019. 12. 14.
반응형


리사이클러뷰(RecyclerView) 아이템 클릭 이벤트 처리하기


리사이클러뷰는 리스트뷰와는 다르게 직접 클릭 이벤트를 설정해 줘야하는데


아주 간단하게 처리가 가능하다.


그전에 일단 리사이클러뷰 가 기본적으로 구현이 되어있어야하므로


https://mine-it-record.tistory.com/253 를 참고하여 만들어보자


앞서 리사이클러뷰를 만들때 생성한 Adapter 내에 아이템 클릭 이벤트 리스너를 만들어 사용하는 방법이다.


이런식으로 Adapter 안에 클릭 이벤트 관련한 것들은 선언해주자


public class BldgListAdapter extends RecyclerView.Adapter<BldgListAdapter.ItemViewHolder> {

...

private OnItemClickListener mListener = null ;

public interface OnItemClickListener {
void onItemClick(View v, int position) ;
}

// OnItemClickListener 리스너 객체 참조를 어댑터에 전달하는 메서드
public void setOnItemClickListener(OnItemClickListener listener) {
this.mListener = listener ;
}

...


이제 어댑터 내부에 있던 ViewHolder 내에 onClick을 선언해 주면 된다.


getAdapterPosition() 을 사용하면 클릭한 해당 아이템의 위치를 가져올 수 있으므로


원하는 방식으로 사용하면 된다.


class ItemViewHolder extends RecyclerView.ViewHolder {

private TextView txtValue;

ItemViewHolder(View itemView) {
super(itemView);

txtValue = itemView.findViewById(R.id.txtValue);

itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();

if(position != RecyclerView.NO_POSITION){
if(mListener !=null){
mListener.onItemClick(v,position);
}
}

}
});

}

void onBind(BldgSelectListItemVO listItem) {
txtValue.setId(listItem.getId());
txtValue.setText(listItem.getValue());
txtValue.setTag(listItem.getTag());
}
}


이제 해당 어댑터를 실행해주는 부분에서 ItemClickListener를 실행해서 


클릭 이벤트를 주어 사용하면 된다.


그리고 나서 setAdapter 로 리사이클러뷰에 삽입하면 


클릭이벤트가 잘 실행될 것이다.


BldgListAdapter adapter = new BldgListAdapter();

adapter.setOnItemClickListener(new BldgListAdapter.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
// 클릭했을때 원하는데로 처리해주는 부분
}
});

lvSelectList.setAdapter(adapter);

아주 극찬할 정도로 정리가 잘되어있는 블로그가 있어 소개한다. 출처이기도 하고


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


반응형


댓글

TOP