RecyclerView는 ListView에서 더 유연하고 심화된 버전이다. RecyclerView 모델에서는 서로 다른 컴포넌트들이 함께 디스플레이될 수 있다. UI를 위한 컨테이너는 개발자가 레이아웃에 추가한 RecyclerView 객체가 될 것이다. RecyclerView는 개발자가 정의한 레이아웃 매니저에 의해 채워진다. 레이아웃 매니저는 표준 레이아웃 매니저(LinearLayoutManager, GridLayoutManager
)도 사용이 가능하고 직접 구현해서 사용해도 된다.
리스트에 존재하는 view들은 view holder 객체들에 의해 제공된다. 이 객체들은 개발자가 정의한 RecyclerView.ViewHolder
의 객체이다. 각각의 view holder들은 하나의 view 아이템 담당하여 디스플레이한다. 예를들어서 음악 리스트를 보여준다고 하면 각각의 view holder들은 하나의 앨범들을 제공할 것이다. RecyclerView
는 필요한 만큼의 view holder들을 동적으로 생성하고 여분으로 몇개 더 생성한다. 사용자가 리스트의 스크롤을 내리면 RecyclerView
는 off-screen view를 가져오고 그것들에 데이터를 다시 바인딩한다.
View Holder는 RecyclerView.Adapter
를 상속하여 정의한 adapter에 의해 관리된다. adapter는 필요한 만큼의 view hodler를 생성한다. 또한 adapter는 view holder에 데이터를 바인딩한다. 데이터 바인딩은 view holder의 위치를 지정하여 이루어진다. adpater의 onBindViewHolder()
메소드를 통해서 가능하다.
RecyclerView.notify..()
메소드를 호출하여 adapter에게 알려줄 수 있다. 알림을 받은 adapter는 새로운 데이터를 바인딩 한다.