[Android] RecyclerView, ListView

kimji1
1 min readMar 31, 2020

--

ListView

  • ListView API 에는 많은 롱테일 기능들이 있음
  • 정의되지 않은 동작에 의존하는 복잡한 사용법
  • 정의되지 않은 동작은 사실상 API가 됨

중복된 기능

애니메이션을 주기 어려움

  • Adapter에서 똑똑한 애니메이션을 위한 충분한 정보를 주지 않음
  • notifyDataSetChanged 에는 어떤 변경이 있었든지 호출

더 복잡한 레이아웃에 대한 요구

  • 간단한 리스팅으로는 충분하지 않아 짐
  • responsive layout, staggered layout 등을 원하게 됨

RecyclerView

  • 더 똑똑한 Adapter
  • 더 효율적인 recycling / animation

RecyclerView

  • comunicate all component(LayoutManager, ItemAnimator, Adapter)

LayoutManager — positioning

ItemAnimator — animate view

Adapter — provide views

  • View 와 ViewHolder를 생성
  • item을 ViewHolder로 binding
  • data set이 변경된 경우 알림 / sync를 맞춤
  • item interaction handling (click listener, touch listener ,,, )
  • view type 지원

ItemDecorator

  • adapter에 접근하지 말 것
  • 필요한 정보는 ViewHolder에 보관
  • 일반적인 onDraw 규칙을 지킬 것
  • recyclerView.getChildViewHolder(view)

--

--

kimji1
kimji1

No responses yet