RecyclerView
- 이미지나 텍스트를 리스트화해서 스크롤하며 볼 수 있게 해주는 컨테이너
- ListView + Flexibility(유연함) + Performance(성능) = RecyclerView
- Adapter의 ViewHolder를 이용
- RecyclerView 내의 View를 재활용하여 사용
1. Component
- Adapter: 아이템 뷰를 생성하는 역할
- Layout Manager
- 아이템 뷰가 나열되는 형태를 관리하기 위한 요소
- LayoutManager가 제공하는 레이아웃 형태로 화면에 표시
- 어댑터를 통해 만들어진 각 아이템 뷰는 ViewHolder 객체에 저장되어 화면에 표시
- 필요에 따라 생성 또는 재활용
- ViewHolder
- RecyclerView 내 위치에 대한 아이템 뷰와 메타데이터를 설명
- 각 뷰들을 보관하는 Holder 객체를 의미
- ViewHolder 객체는 레이아웃의 태그 필드 안에 각 구성 요소 뷰를 저장하므로 반복적으로 조회하지 않고도 즉시 액세스 할 수 있음
2. How to Use RecyclerView
1) 사용할 Activity xml에 RecyclerView 추가
2) RecyclerView 아이템에 표시될 View 레이아웃 추가
→ 아이템 View를 위한 레이아웃 XML 작성
3) Adapter 구현
→ RecyclerView.Adapter상속
onCreateViewHolder(ViewGroup parent, int viewType)
ViewHolder 객체를 생성
onBindViewHolder(ViewHolder holder, int position)
ViewHolder에 data를 넣는 작업 수행
getItemCount()
data의 개수를 반환
4) RecyclerView에 Adapter와 Layout Manager 지정
→ setAdapter(), setLayoutManager() 메서드 사용
3. RecyclerView 생명주기
1) onAttachedToRecyclerView(RecyclerView recyclerView)
- Adapter가 RecyclerView에 연결될 때 호출
2) onCreateViewHolder(ViewGroup parent, int viewType)
- 새로운 아이템 뷰를 위한 ViewHolder 객체를 생성
3) onBindViewHolder(ViewHolder holder, int position)
- 생성된 ViewHolder를 이용하여 아이템 데이터를 뷰에 연결
4) onViewAttachedToWindow(ViewHolder holder)
- ViewHolder가 화면에 연결되었을 때 호출
5) onViewDetachedFromWindow(ViewHolder holder)
- ViewHolder가 화면에서 분리될 때 호출
6) onViewRecycled(ViewHolder holder)
- ViewHolder가 재활용될 때 호출
- 재활용을 위한 초기화 작업을 수행할 수 있음
7) onDetachedFromRecyclerView(RecyclerView recyclerView)
- Adapter가 RecyclerView와 연결이 해제될 때 호출됨
[참고 사이트]
'RecyclerView로 동적 목록 만들기', developers
'ViewHolder Pattern에 대해 알아보기', Medinum