한정된 수의 뷰를 유지해 큰 데이터 집합을 표시하는 컨테이너
화면에 보이는 수 정도의 itemView만 만들어 놓고 scroll되며 안보이게 된 itemView에 new data로 replace 하는 방식
View 정보를 들고 있는 class
ViewHolder를 생성하는 function
data를 가져와 ViewHolder layout을 채우는 function
즉, 새로운 itemView가 보여야 하는 상황에 reuse 될 View가 있다면 바로 onBindViewHolder가 호출되고, 그렇지 않다면 onCreateViewHolder를 통해 생성한 뒤 진행
이런 방식으로 진행되기 때문에
매번 다른 View를 findViewById(id)를 통해 찾아옴
이 function은 id와 매치되는 View를 리턴하기 위해 parent -> children 모두를 돌며 확인함. 따라서, 성능에 영향을 미칠 수 있음(버벅이며 스크롤된다거나..!)
- onCreateViewHolder: 한정된 수 만큼 호출
- onBindViewHolder: 스크롤 등의 발생으로 스크린에 출력되는 data가 변경될 때마다 호출
굳이 매번 onBindViewHolder에서 설정해줄 필요 🙅♀️
👉 onCreateViewHolder에서 Recycler.ViewHolder.getAdapterPosition()을 이용해 설정하자!
findViewById
-> parent(전체), child(부분)에 따라 다른 구현을 갖는데 composite 패턴을 사용하나?