-
[Android/Java] 리싸이클러뷰(RecyclerView)Android/Java 2022. 5. 17. 15:12반응형
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다]
<ListView와 비교 했을 때 RecyclerView의 장점>
- ListView는 세로 방향으로만 스크롤 내릴 수 있지만 RecyclerView는 가로 방향으로도 할 수 있음
- 이유 : LayoutManager를 우리가 관리할 수 있기 때문
- LayoutManager의 종류
1. Linear(수평, 수직, 일렬)
2. Gride(바둑판 모양의 격자)
3. StaggeredGrid(모양이 일정하지 않음)
- 성능상 큰 차이는 없지만 ListView 보다는 RecyclerView의 성능이 더 좋음
- ListView에 비해 유연성 높음
- ListView는 애니메이션 사용이 어렵고 다양한 아이템뷰가 필요하면 복잡한 커스텀 작업이 필요
- 아이템뷰 생성할 때 마다 inflate와 findViewById가 반복되어 리소스 비용 증가
<어댑터(Adapter)>
- 데이터 관리 기능 담당
<뷰홀더(ViewHolder)>
- 각각의 아이템을 위한 뷰 저장
- 뷰홀더 역할을 하는 클래스를 Adapter 클래스 안에 넣어둔다고 생각하면 됨
- ListView와 RecyclerView는 inflate 최소화를 위해 각 뷰를 재활용 함
- 이 때 매번 findViewById 호출로 인해 성능 저하가 일어나는 것을 방지하기 아이템뷰의 요소에 바로 접근할 수 있도록 저장해두고 사용하기 위한 객체
<어댑터에 반드시 구현되어야 하는 메서드 3가지>
1. getItemCount()
- 어댑터에서 관리하는 아이템 개수 반환
2. onCreateViewHolder()
- RecyclerView는 뷰홀더를 새로 만들어야 할 때 마다 이 메서드 호출
- 뷰홀더와 뷰홀더 내부 View를 생성하고 초기화(뷰 내부 데이터를 채우지는 않음)
3. onBindViewHolder()
- RecyclerView는 뷰홀더와 데이터 연결할 때 이 메서드 호출
- 뷰홀더 내부 View의 데이터 채움
...계속 추가 예정
반응형'Android > Java' 카테고리의 다른 글
[Android/Java] SQLite 사용법 (0) 2022.05.20 [Android/Java] 타이틀 바(액션 바) 없애기 (0) 2022.05.19 [Android/Java] 액티비티 생명주기 (0) 2022.05.16 [Android/Java] 프래그먼트(Fragment) (0) 2022.04.03 [Android/Java] 스레드(Thread)와 핸들러(Handler) (0) 2022.03.18