ListView and Recycling – Developing Android Apps

ListView는 눈에 보이는 모든 항목에 뷰를 요청하며 시작합니다 그래서, 여러분의 대다수는 화면에 맞출 수 있습니다 또한, 새로운 뷰가 생성되고 채워지면서 흔들림 없이 스크롤 할 수 있음을 확인 하기 위해 양 방향으로 한 쌍을 생성할 것입니다 그 다음, 적절한 때에 새로운 항목을 생성합니다 그래서 그것은 사용자에게 보여질 수 있도록 다음 차례로 옵니다 그래서, 만약 사용자가 리스트의 아래에서 스크롤 하지 않는 다면 ListView는 Adapter에서 뷰를 요청하지 않을 것입니다 그러나 이것은 어설플 뿐입니다 여러분이 보시는 것과 같이 만약 사용자가 계속해서 스크롤하면 비록 그들이 스크린의 위에서 부터 사라진다고 하더라도 우리는 계속해서 새로운 뷰를 추가 할 수 있을 것입니다 결국 그것은 메모리 사용과 실행에 동일한 영향을 주는 것입니다 우리가 처음부터 직접 모든 뷰를 생성해온 것처럼 말이죠 해결 방법은, 화면에서 스크롤하여 사라질 때 각각의 뷰를 재활용하는 것입니다 위 또는 아래에 있는 뷰로 이동 할 때 다른 항목을 봐야 할 경우 재사용되도록 만드는 것이죠 그래서, 생성하기보다는 그것이 뷰에 보여질 때 리스트의 각 항목의 메모리를 저장하여 우리는 단지 눈에 보이는 항목과 각 옆면의 쌍의 개수에 대한 단계를 생성하면 됩니다 그런 다음, 새로운 리스트 항목이 뷰로 들어올 때마다 휴지통에 있는 항목 중 하나에 표시된 데이터를 업데이트 하면 됩니다

그 결과는 어떨까요? 더 적은 메모리 부담, 훨씬 부드러운 스크롤 그리고 여러분이 관리해야 하는 뷰가 적어집니다 이런 동일한 재활용 작용은 모든 Adapter View의 하위 클래스, 즉 GridView, ListView와 같은 하위 클래스에 걸쳐 실행 됩니다 그것은 또한 Adapter가 스스로 조절하는 이러한 일에 직접 가담하지 않는 이유를 소개합니다 그들을 계속해서 분리하면서 Adapter는 각각의 숨은 데이터 요소들의 표시 방식을 정의하는 반면 Adapter View를 실행하는 것 자체는 각각 의 요소들이 펼쳐지는 방식을 제어하게 됩니다 그것을 이러한 특정 예제로 List 또는 Grid가 되게 하세요