안드로이드

안드로이드 RecyclerView addOnItemTouchListener 에서 item position 구하기

알통몬_ 2017. 10. 16. 11:14
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 안드로이드 RecyclerView의 아이템 터치 이벤트를 줄 때 item들의 position 을 구하는

방법에 대해 알아보겠습니다.


RecyclerView 에는 ListView의 setOnItemClickListener 에 대응하는 addOnItemTouchListener 가 있습니다.


그런데 addOnItemTouchListener 에는 setOnItemClickListener 와는 다르게 int position 매개 변수가


존재하지 않기 때문에 코드로 구해주어야 합니다.


방법은 간단합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
binding.recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
            @Override
            public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
                View child = rv.findChildViewUnder(e.getX(), e.getY());
                int position = rv.getChildAdapterPosition(child);
 
                Log.d("position","["+ position +"]");
                return false;
            }
 
            @Override
            public void onTouchEvent(RecyclerView rv, MotionEvent e) {
            }
 
            @Override
            public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
 
            }
        });
cs

onInterceptTouchEvent 함수 아래에 코드를 넣으시면 됩니다.


위 처럼 하시면 RecyclerView 의 item 들을 터치했을 때 몇 번째 position 인지 알 수 있습니다.


활용하면 터치 이벤트를 넣을 수 있겠죠??


이상입니다.


반응형