출처
: http://blog.naver.com/dntjd207/220604313561
: http://blog.daum.net/andro_java/1169
출처 : (Jacob Tabak) http://stackoverflow.com/questions/24471109/recyclerview-onclick/24471410
자그마한 클래스 파일 하나만 만들어 사용하면 된다.
아이템뷰를 컨트롤하는 데만 사용 가능하며, 아이템 내부의 각 뷰는 어댑터 클래스에서 컨트롤해야 된다.
1. 사용법
리스너를 붙이는 rv_audios 이름이 리스너의 둘째 파라미터로 그대로 들어간다.
rv_audios.addOnItemTouchListener(
new RecyclerItemClickListener(context, rv_audios ,new RecyclerItemClickListener.OnItemClickListener() {
@Override public void on ItemClick(View view, int position) {
playMusic(audioList.get(position).getMusicID());
}
@Override public void on LongItemClick(View view, int position) {
// do whatever
}
})
);
2. 클래스
package net.kbh.simple;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
// (Jacob Tabak) http://stackoverflow.com/questions/24471109/recyclerview-onclick/24471410#24471410
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private on ItemClickListener mListener;
public interface on ItemClickListener {
public void on ItemClick(View view, int position);
public void on LongItemClick(View view, int position);
}
GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, on ItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean on SingleTapUp(MotionEvent e) {
return true;
}
@Override
public void on LongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && mListener != null) {
mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child));
}
}
});
}
@Override public boolean on InterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
return true;
}
return false;
}
@Override public void on TouchEvent(RecyclerView view, MotionEvent motionEvent) { }
@Override
public void on RequestDisallowInterceptTouchEvent (boolean disallowIntercept){}
}
'IT_Programming > Android_Java' 카테고리의 다른 글
Android Up 네비게이션 사용하기 (0) | 2016.02.03 |
---|---|
안드로이드 6.0 마시멜로 무엇을 테스트 할까요? (0) | 2016.01.28 |
[펌] 안드로이드 Doze / Stand By 모드 정리 (0) | 2016.01.21 |
Android design Guide (0) | 2016.01.20 |
[펌] 개발 협업을 위한 안드로이드 디자인 가이드 (0) | 2016.01.20 |