** RecyclerView, Adapter, ViewHolder 개념 **


참고 URL : http://horajjan.blog.me/220745854967


'실무에 바로 적용하는 안드로이드 프로그래밍, 9장'을 인용하였다  (예제 첨부)

RecyclerView는 ViewGroup의 서브 클래스로, 자식 View 객체들의 리스트를 보여준다

위 그림처럼 100개의 View를 생성하는 대신 ​한 화면을 채우는 데 충분한 12개만 생성한다. 그리고 화면이 스크롤되면서 View가 화면을 벗어날 때 RecyclerView는 그 View를 버리지 않고 재활용한다

RecyclerView는 위 TextView들을 재활용하고 화면에 보여주는 책임만 갖는다. Adapter의 서브 클래스와 ViewHolder의 서브 클래스가 함께 동작해야 한다

ViewHolder는 한 가지 일, 즉 하나의 View를 보존하는 일을 한다

RecyclerView는 자신이 ViewHolder를 생성하지 않는다. 대신에 그 일을 어댑터(adapter)에 요청한다

어댑터는 다음과 같은 책임을 갖는다

  • 필요한 ViewHolder 객체를 생성한다
  • 모델 계층의 데이터를 ViewHolder와 결합한다​

​우선 RecyclerView에서 구현하는 어댑터의 getItemCount() 메서드를 호출하여 리스트에 보여줄 객체 개수를 요청한다

그 다음에 RecyclerView는 어댑터의 onCreateViewHolder(ViewGroup, int) 메서드를 호출하여 ViewHolder 객체를 받는다. 그리고 RecyclerView는 onBindViewHolder(ViewHolder, int)를 호출하며, 이때 리스트 항목의 위치와 함께 ViewHolder 객체를 인자로 전달한다. 그 다음에 어댑터는 그 위치 모델 데이터를 찾은 후 그것을 ViewHolder의 View에 결합한다

여기서 주목할 점은 ​onCreateViewHolder(ViewGroup, int) 메서드가 onBindViewHolder(ViewHolder, int)보다 적게 호출될 수 있다는 것이다. 충분한 개수의 ViewHolder 객체가 생성되면 RecyclerView가 ​onCreateViewHolder(...)의 호출을 중단하기 때문이다. 그리고 기존에 생성된 ViewHolder 객체를 재사용하여 시간과 메모리를 절감한다


'[Android] - 개념 > RecyclerView' 카테고리의 다른 글

RecyclerView와 CardView 사용하기  (0) 2017.01.18
RecyclerView 기본 개념  (0) 2017.01.18
Posted by 농부지기
,