공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
안드로이드를 개발할 때 어떤 Listener는 setListener이고
어떤 Listener는 addListener인 것을 확인할 수 있습니다.
예를 들어 ClickListener는 setOnClickListener이지만
RecylerView의 ItemTouchListener는
addOnItemTouchListener를 통해 listener를 추가합니다.
위 두 타입의 리스너의 차이는 이름에서도 알 수 있듯
set은 기존에 다른 리스너가 이미 set 되어있다면
기존 리스너는 해제되고 가장 최근에 set 한 리스너로 대체됩니다.
하지만 add 가 붙은 경우는 계속해서 add가 되는 거죠
그래서 recyclerView에 addOnItemTouchListener로 같은
리스너를 어려개 add 할 경우 터치작업이 중복해서 일어납니다.
때문에 add 를 하고 다시 한 번 add를 해야한다면
꼭! remove를 먼저 해줘야 합니다.
ex)
binding.exampleViews.addOnItemTouchListener(itemTouchListener);
binding.exampleViews.removeOnItemTouchListener(itemTouchListener);
위처럼요.
recyclerView에 ItemDecoration을 추가할 때도 마찬가지입니다.
Decoration을 addItemDecoration으로 추가해주기 때문에
다시 한 번 추가해야한다면
먼저 removeItemDecoration으로
기존에 add한 Decoration을 제거한 후
새로운 Decoration을 add 해주어야 합니다.
binding.questViews.removeItemDecoration(questDecoration);
binding.exampleViews.removeItemDecoration(examplesDecoration);
questDecoration = new ViewsDecoration(fromDpToPx(this, 190), QUEST_CNT);
binding.questViews.addItemDecoration(questDecoration);
int dp = EXAMPLES_CNT == 3 ? 57 : 18;
examplesDecoration = new ViewsDecoration(fromDpToPx(this, dp * 2), EXAMPLES_CNT);
제가 개발하면서 깨닭은 점은 간단히 포스팅해봤습니다.
감사합니다. 틀린 부분이 있다면 댓글로 마구마구 지적부탁드립니다.
'안드로이드' 카테고리의 다른 글
안드로이드 ImageView 회전(setRotation()), x축 회전(setRotationX()), y축 회전(setRotationY()) 동적으로하기 rotate x axis, y axis dynamically of ImageView (1) | 2019.05.22 |
---|---|
안드로이드 easy mode 스도쿠 제작 - 1.문제 만들기 (0) | 2019.05.15 |
안드로이드 new Handler.postDelayed()로 호출된 Runnable 해제하는 법 (0) | 2019.05.09 |
안드로이드 dp를 px로 변환시키기. convert from dp to px (0) | 2019.05.02 |
안드로이드 스튜디오 3.4 업데이트 New Resource Manager (0) | 2019.04.18 |