반응형
Android RecyclerView
Concept Of RecyclerView
기본 개념 : RecyclerView는 개발자가 데이터를 제공하고 항목의 모양을 설정하면 RecyclerView 라이브러리가 필요할 때 요소를 동적으로 생성한다. RecyclerView는 개별 요소를 재활용해서 사용하는데, 항목이 스크롤되어 화면에서 벗어나면 View를 제거하지 않는다. 대신, 화면에서 스크롤된 새 항목의 View를 재사용한다. 이를 통해 앱의 응답성을 개선하고 전력 소모를 줄여 성능이 개선된다.
Key Classes
- RecyclerView : 데이터에 해당하는 View가 포함된 ViewGroup.
- ViewHolder : 목록의 각 개별 요소는 ViewHolder 객체로 정의된다. ViewHolder가 생성되었을 때는 연결된 데이터가 없다. ViewHolder가 생성된 후 RecyclerView가 ViewHolder를 View의 데이터에 바인딩한다. ViewHolder는 View의 Wrapper이고 그 View는 RecyclerView로 관리된다.
- Adapter : RecyclerView를 요청한 다음, Adapter에서 메서드를 호출하여 View를 View의 데이터에 바인딩한다. 데이터를 ViewHolder의 View와 연결하기 위해 Adapter를 정의한다.
- LayoutManager : LayoutManager는 목록의 개별 요소를 정렬한다.
RecyclerView Adapter
- onCreateViewHolder() : RecyclerView는 ViewHolder를 새로 만들어야 할 때마다 이 메서드를 호출한다. 이 메서드는 ViewHolder와 연결된 View를 생성하고 초기화하지만 아직 ViewHolder가 특정 데이터에 바인딩된 상태는 아니다.
- onBindViewHolder() : RecyclerView는 ViewHolder를 데이터와 연결할 때 이 메서드를 호출한다. 이 메서드는 적절한 데이터를 가져와서 연결된 ViewHolder의 Layout을 채운다.
- getItemCount() : RecyclerView는 데이터 세트 크기를 가져올 때 이 메서드를 호출한다. 이 메서드를 사용하여 항목을 추가로 표시할 수 없는 상황을 확인한다.
RecyclerView의 작동방식
- View가 RecyclerView에 attach 되면 pool에서 제거된다. (스크롤이 되는 등 detach 되면 empty View pool에 추가된다.)
- Adapter 안에서 empty View가 생성되거나 pool이 더해지면 onCreateViewHolder()를 실행하여 View를 inflate 한다.
- onBindViewHolder()를 실행하여 inflate 된 View에 데이터를 채운다.
참고자료
https://developer.android.com/guide/topics/ui/layout/recyclerview
https://developer.android.com/guide/topics/ui/layout/recyclerview-custom
반응형