앱 개발/안드로이드(Java)

RecyclerView 아이템 클릭 리스너 구현하기

태기 2021. 6. 17. 10:46

https://taek2.tistory.com/13

 

[안드로이드] RecyclerView를 커스텀해서 가로,세로 구현하기

ListView에 이어서 RecyclerView를 만들어보자 이제부터는 프로젝트 만드는건 생략함. 물론 이론 설명도 생략. - ListView는 세로로 리스트가 나타나지만 RecyclerView는 가로로 리스트를 나타낼 수도 있다!

taek2.tistory.com

 

- RecyclerView 커스텀 구현부터 먼저 한 다음 따라해야함

 

OnItemClickListener & OnLongItemClickListener 구현

 

- RecyclerViewAdapter.java 에 다음 소스코드를 추가

public interface OnItemClickListener {
	void onItemClick(int pos);
}

private OnItemClickListener onItemClickListener = null;

public void setOnItemClickListener(OnItemClickListener listener) {
	this.onItemClickListener = listener;
}


public interface OnLongItemClickListener {
	void onLongItemClick(int pos);
}

private OnLongItemClickListener onLongItemClickListener = null;

public void setOnLongItemClickListener(OnLongItemClickListener listener) {
	this.onLongItemClickListener = listener;
}

 

- 같은 RecyclerViewAdapter.java 파일에서 ViewHolder 생성자 안에 다음 소스코드 추가

imgView_item.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int position = getAdapterPosition();
        if (position != RecyclerView.NO_POSITION) {
            if (onItemClickListener != null) {
            	onItemClickListener.onItemClick(position);
            }
		}
    }
});

imgView_item.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        int position = getAdapterPosition();
        if (position != RecyclerView.NO_POSITION) {
            if (onLongItemClickListener != null) {
                onLongItemClickListener.onLongItemClick(position);
                return true;
            }
        }
      	return false;
    }
});

 

 

 

- MainActivity.java 에 다음 소스코드 추가

  : 리사이클러뷰 setAdapter() 하기 전에 구현

mRecyclerViewAdapter.setOnItemClickListener(new RecyclerViewAdapter.OnItemClickListener() {
    @Override
    public void onItemClick(int pos) {
        Toast.makeText(getApplicationContext(), "onItemClick position : " + pos, Toast.LENGTH_SHORT).show();
    }
});

mRecyclerViewAdapter.setOnLongItemClickListener(new RecyclerViewAdapter.OnLongItemClickListener() {
    @Override
    public void onLongItemClick(int pos) {
        Toast.makeText(getApplicationContext(), "onLongItemClick position : " + pos, Toast.LENGTH_SHORT).show();
    }
});

 


 

 

실행결과

 

: Toast 메세지 잘 뜸