반응형
| ViewHolder 패턴 의무화
ListView는 뷰홀더 패턴을 권장했지만, 강제성은 없다.
반면, RecyclerView는 무조건 뷰홀더 패턴을 사용해야한다.
그래서 ListView와 달리 RecyclerView는 다음과 같은 메서드를 Adapter에서 사용한다.
- onCreateViewHolder(ViewGroup parent,int viewType)
- onBindViewHolder(ListItemViewHolder holder,int position)
| onCreateViewHolder
뷰 홀더를 생성하고 뷰를 붙여주는 부분. 처음에 화면에 보이는 뷰에 대해 뷰 홀더가 생성되며,
이후 스크롤 시 보여지는 뷰들은 재활용되는 뷰이므로 다시 호출되지 않는다.
| onBindViewHolder
화면에 뷰홀더가 붙을 때마다 호출된다.
뷰 홀더를 전달하고 어댑터는 position의 데이터를 결합시킨다.
RecyclerView는 이러한 ViewHolder의 의무화를 통해 뷰를 재사용함으로써
효율성을 높이고 메모리 낭비를 줄여준다는 장점이 있다.
| LayoutManager 제공
- LinearLayoutManager : 수직 또는 수평 타입의 리스트를 지원한다.
- GridLayoutManager : 격자형 타입의 리스트를 지원한다.
- StaggeredGridLayoutManager : ItemView 마다 크기가 다른 리스트를 만들 수 있도록 지원한다.
| 구분 ( Divider )
ListView에서는 ItemView 사이의 간격에 대한 설정을 Divider를 통해 설정 하였다면,
RecyclerView에서는 ItemDecoration 클래스를 통해 설정이 가능하다.
다소 사용하기에 복잡해지긴 했지만 좀 더 동적인 사용과 커스텀에 유리해졌다.
| 애니메이션
ListView는 아이템 삽입, 삭제에 대한 애니메이션이 없다.
Recyclerview는 ItemAnimator클래스를 통해 애니메이션 핸들링 가능하다.
삽입, 삭제, 이동에 대한 커스터마이징 가능, defaultItemAnimator가 제공된다.
반응형
'Mobile > Android' 카테고리의 다른 글
[ Android ] 소프트스퀘어드를 마치며 (2) | 2020.11.15 |
---|---|
[ Android ] android java.lang.NoSuchMethodError: com.intellij.ide.plugins.PluginManagerCore.loadDescriptors() (0) | 2020.11.02 |
[ Android ] 안드로이드 생명주기 (Life Cycle) (0) | 2020.10.05 |
[ Android ] Manifest 매니패스트 (0) | 2020.10.04 |
[ Android ] 다이얼로그 띄우기 (0) | 2020.09.06 |