제이슨의 개발이야기

recyclerView 아이템 들 중 원하는 아이템 혹은 위젯에 변화주기! 본문

안드로이드

recyclerView 아이템 들 중 원하는 아이템 혹은 위젯에 변화주기!

제이쓰은 2021. 2. 19. 18:47
728x90
반응형

recyclerView 로 개발하면 흔하게 직면하게 되는 문제가 있습니다

예들들면 이 버튼을 눌렀을때 다른 버튼이 작동안되게 한다거나 혹은 

이 사진을 선택하면 다른 사진은 선택이 취소되는 등등 내가 선택한 아이템에 따라 다른 아이템의 상태가 바뀌는 경우입니다 

아래 사진으로 쉽게 설명 하겠습니다 참고로 혹시 아래와 같은 ImagePickerView를 만들고 싶으신 분에게 좋은 힌튿가 될 거같구 혹시 봐도 ImagePickerView를 만들기 어렵다고 하면  추후에 ImagePickerView 코드 설명을 올리겠습니다

나이키 후드티를 선택 할 경우
나이키 후드티 를 선택 한 후 다시 아이티 뱅크 사진을 선택

위에 두 사진 처럼 처음에는 후드티 를 선택하고 다음에 아이티 뱅크 사진을 선택 할 경우 동그라미 체크가 바뀌어야 됩니다 그러나 일반적으로 직접 저 체크박스에 접근해서 바꿔주는것은 좋은 방법이 아니구 된다 하더라도 여러가지 문제가 발생할 수 있습니다 왜냐하면 recyclerview는 view를 재사용하기 때문입니다 

그렇다면 어떻게 직접 접근 하지 않고 원하는 아이템에 변화를 줄 수 있을까요? 그건 adapter에 있는 notifyItemChanged(); 메소드를 사용하면 가능합니다 

notifyItemChanged(position); -> 이 것은 내가 원하는 아이템의 position 의 값을 줌 으로 써 그 position 의 아이템의 변화를 줄 수 있습니다 notifyitemChanged 메소드는 이렇게 position 하나만 변화 줄 수 도 있고 범위를 줌으로 써 해당 범위 안에 아이템들도 변화를 줄 수 가 있습니다 

 

그렇다면 내가 원하는 position을 어떻게 알까?

저 같은 경우 클릭했을때  viewholder에서 감지해서 getAdapterPosition();을 통해 position 을 받습니다

그래서 notifyItemChanged(getAdapterPosition()); 이렇게 하면 원하는 position 에 변화를 줄 수 있습니다!

밑에 사진은 참고 할 수 있도록 첨부합니다! 

여기서 중요한건 resetting(gerAdapterPosition()); 부분과 resetting 메소드를 보시면 됩니다

728x90
반응형