[번역] – RecyclerView 의 내부 동작. 본 글 을 Niharika Arora 님 의 글 을 한국어 로 번역 한 글 입니다… | por hongbeom | hongbeomi dev | Noviembre de 2020

RecyclerView 내부 동작 을 알아 보기 전에 먼저 ListView 가 있었음 에도 불구 하고 왜 RecyclerView 가 생겼는지 에 대해 파악해 보겠습니다.

ListView 는 다음 과 같은 몇 가지 단점 이 있었습니다.

  • 스크롤 시 버벅임 : ListView 는 데이터 셋 에 데이터 아이템 이 있는 만큼 많은 뷰 를 생성 하는 습관 이 있습니다. 이렇게 뷰 를 만들고 findViewById() 메소드 를 사용 하는 것은 비용 이 상당히 많이 드는 작업 입니다. 물론 우리 만 의 방법 으로 성능 을 향상 시킬 수 있긴 합니다.

위에서 적은 이유 외에도 Android 개발자 에게는 고도화 되고 좋은 함수 를 제공 하는 새로운 무언가 가 필요 하다는 것을 나타내는 많은 이유 가 존재 합니다.

RecyclerView 는 무엇 일까요? 안드로이드 공식 문서 에 다음 과 같이 설명 되어 있습니다.

RecyclerView는 스크롤 리스트 를 만들 수 있는 UI 컴포넌트 입니다. 기본적 으로 Viewholder 패턴 을 사용 하여 수평 / 수직 / 그리드 또는 offset 한 그리드 방식 으로 어댑터 기반 의 뷰 를 렌더링 하는데 사용 되는 새로운 ViewGroup 입니다.

이미지 출처: Google

RecyclerView 의 4 가지 주요 컴포넌트 는 다음 과 같습니다.

  • RecyclerView.Adapter : 앱 의 데이터 셋 에서 RecyclerView에 표시 되는 아이템 뷰 에 바인딩 을 제공 합니다. 어댑터 는 RecyclerView의 각 아이템 뷰 의 위치 를 데이터 소스 의 특정 위치 에 연결 하는 방법 을 알고 있습니다.

이제 리사이클 러뷰 의 프로세스 를 알아 봅시다.

이미지 출처: Microsoft

우선 데이터 셋 (데이터 리스트) 에 데이터 (아이템) 가 보관 됩니다. 어댑터 는 데이터 를 뷰 에 바인딩 한 다음 뷰 를 제어 하는 레이아웃 매니저 에게 이를 제공 합니다.

RecyclerView 는 데이터 소스 의 모든 아이템 에 대해 아이템 뷰 를 할당 하지 않습니다. 대신 화면 에 맞는 아이템 뷰 의 수만 할당 하고 사용자 가 스크롤할 때 해당 아이템 레이아웃 을 다시 재활용합니다. 뷰 가 스크롤 되어 보이지 않게 되면 위 다이어그램 과 같이 재활용 프로세스 를 거 칩니다.

  • 뷰 가 보이지 않고 더 이상 표시 되지 않으면 chatarra 뷰 가 됩니다.

Chatarra 뷰 가 무엇 인지 알아 보겠습니다. RecyclerView 에는 이 뷰 를 위한 Montón de basura 캐싱 시스템 이 존재 합니다.

이는 뷰 를 어댑터 로 다시 전달 하지 않고도 뷰 를 레이아웃 매니저 로 직접 반환 할 수 있는 경량화 된 컬렉션 입니다. 이것이 가능한 이유 는 데이터 가 여전히 뷰 홀더 에 연결 되어 있기 때문 입니다. 따라서 데이터 를 바인딩 하기 위해 어댑터 에 다시 전달할 필요 가 없습니다. 여기서 배치 된 뷰 가 일시적 으로 분리되지만 동일한 레이아웃 을 그릴 때 재사용 됩니다.

뷰 가 보여 지는 공간 바로 위와 아래 의 보이지 않는 뷰 는 분리 된 뷰입니다. 분리 된 뷰 는 코드 가 리턴 되기 전에 다시 연결 되어야 합니다.

  • 새로운 아이템 을 표시 할 경우 재사용 하기 위해 reciclar la piscina에서 뷰 를 가져 옵니다. 이 뷰 를 표시 하기 전에 어댑터 에 의해 다시 바인딩 되어야 하므로 sucio 뷰라고 합니다.

Pila de chatarra 과 마찬가지로 다음 과 같은 타입 의 뷰 에 대한 다른 캐싱 시스템 이 있습니다. 이 시스템 은 바로 Recicla la piscina입니다.

이 컬렉션 은 잘못된 데이터 (다른 위치 또는 인덱스 의 데이터) 가 있는 것으로 가정 되는 뷰로 구성 되어 있으며, 데이터 를 뷰 홀더 에 다시 연결 하거나 바인딩 한 다음 레이아웃 매니저 로 반환 수 있도록 항상 어댑터 에 전달 전달.

Reciclador 인스턴스 는 새 뷰 를 얻 거나 이전 뷰 를 재활용 할 수 있도록 레이아웃 매니저 에게 제공 됩니다.

  • sucio 뷰 는 재활용됩니다. : 어댑터 는 표시 할 다음 아이템 의 데이터 를 찾고 이 데이터 를 이 아이템 의 뷰 에 복사 합니다. 이러한 뷰 에 대한 참조 는 재활용 뷰 의 뷰 홀더 에서 검색 됩니다.

어댑터 가 아이템 레이아웃 을 se hincha 할 때 마다 해당 뷰 홀더도 생성 됩니다. 뷰 홀더 는 FindViewById 를 사용 하여 hinchado 된 아이템 레이아웃 파일 내부 의 뷰 에 대한 참조 를 가져 옵니다. 이러한 참조는 레이아웃 을 재활용 하여 새로운 데이터 를 표시 할 때 마다 뷰 에 새로운 데이터 를 로드 하는데 사용 됩니다.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *