반응형
제목 그대로입니다.
가로로 리스트뷰를 제작해야해서 리사이클러뷰를 썼는데,
리사이클러뷰는 아이템에 접근할 수 있는 메서드가 onBindViewHolder뿐입니다.
기존 레이아웃을 재활용할 뿐더러 접근할수 있는 메서드가 하나 (지만 이것도 데이터 바인딩에 사용)밖에 없어서
리스트뷰에 비해서 사용하기가 너무 까다로웠습니다.
혼자서 끙끙대다가 구글링해보니 같은 고민을 하시는 분이 많아 저도 작성해봅니다.
리사이클러뷰에서 단일 아이템을 선택해서, 해당 아이템만 배경색을 바꾸려면 다음과 같은 과정이 필요합니다.
1. 선택된 아이템의 Position을 저장할 전역변수를 생성합니다.
2. onBindViewHolder에서 생성된 ViewHolder를 ArrayList로 유지합니다.
+ ArrayList의 contain메서드를 활용해 중복되지 않게 유지합니다.
3. onBindViewHolder의 holder.itemView에 onclickListener를 부착합니다.
클릭시 일단 ArrayList로 유지한 뷰홀더의 배경색을 모두 초기화합니다.
이후에 클릭된 position을 전역변수에 저장하고, 클릭된 홀더의 itemView의 배경색을 변경합니다.
4. onBindViewHolder로 돌아가, 뷰를 생성하거나 재활용할 떄, 전역변수에 저장된 Position과 일치하면 배경색을 변경,
일치하지 않는다면 초기색을 하도록 코딩합니다.
5. 이후 선택되어있는 아이템의 데이터를 가져오도록 메서드를 추가합니다.
반응형
'IDE & Framework > Android' 카테고리의 다른 글
AsyncTask는 왜 deprecated 되었을까? (0) | 2021.07.09 |
---|---|
Retrofit2 간단한 사용법 (0) | 2021.06.29 |
Custom ListView 만들기(1/2) - 설계 (0) | 2021.06.05 |
LayoutInflater는 무엇일까? (0) | 2021.06.05 |
비동기(Async)통신과 동기(Sync)통신의 차이 feat. retrofit (0) | 2021.05.08 |