ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] ListView 이해하기
    프로그래밍/Android 2017. 10. 23. 14:56


    안녕하세요. 요즘 날씨가 많이 쌀쌀해졌네요. 겨울만 되면 콧물에 기침을 달고 사는 저로서는 겨울이 매번 반갑지만은 않네요ㅠ

    다들 감기 조심하시길 바랍니다.


    이번 포스팅 주제는 ListView입니다.

    이미 많은 분들이 사용하고 계시고, 어찌보면 가장 기초적인 내용일 수 있습니다. 다만, 간혹 ListView의 특성을 이해하지 않고 사용법에 따라 사용만 하다가 원하는 대로 결과가 나오지 않아 원인을 찾지 못하고 헤메시는 분들이 계시기에 이번 주제로 다뤄볼까 합니다.


    그럼 부족하나마, 이번 포스팅 시작하겠습니다.




         

    좌 - 구글 Play 스토어  우 - 설정창



    만약 위와 같은 화면을 위해 레이아웃을 구성해야 된다면 어떻게 하시겠습니까?


    방법은 여러가지가 있겠죠.. xml에 하나하나 그려가며 잡아줄 수도 있고, 코드로 동적으로 원하는 만큼의 레이아웃을 만들어 붙일 수도 있고. 등등.. 사실 정답은 없습니다. 본인이 편한 방법을 사용하면 되겠죠.

    하지만 위의 방법들은 리스트의 아이템이 많아질수록 xml이 굉장히 복잡해지거나 길어져 보기에도 불편하고 유지보수에도 힘들것 같고, 한번에 화면에 모두 그려야하기에 안드로이드가 부담스러워 할 것 같네요.


    하지만 오늘의 주인공인 ListView를 사용한다면 좀 더 간단하게, 좀 더 부담이 덜 되도록 알아서 관리를 받을 수 있답니다.

    그렇다면 오늘의 주인공인 ListView는 저런 단점들을 어떻게 처리하고 있을까요?



    ListView란?

    ListView란 무엇일까요? ListView는 말 그대로 View들을 리스트처럼 보여주도록 하는 컨테이너 입니다.

    '컨테이너'라 함은 흔히 알고 계시는 선박에서 물건들을 담아 보관해두는 역할을 하는 박스를 말합니다. 여기에서는 물건들 대신에 View들을 담아두는 ViewGroup 이라고 이해하시면 될 것 같습니다.


    ListView의 구조



    ListView가 View를 담아두기만 하는 녀석이라면, 위에서 말씀드린 방법과 별 차이가 없겠죠? 당연히 담아 놓은 View들을 효율적으로 관리하는 역할도 하는데요. 

    ListView는 화면에 보이는 View들만 생성하여 보여주고 있다가 화면을 위아래로 스크롤 시에 보이지 않게 된 부분의 기존 View를 메모리에서 해제한 뒤, 재활용하여 새롭게 보이게 되는 View를 구성하게 됩니다.


    ListView의 동작구조



    이번 포스팅의 가장 중요한 키워드는 "재활용"입니다.


    리스트의 아이템이 아무리 많더라도 ListView는 화면에 보이는 몇 개의 View만 생성하여 보여주고, 스크롤 시에도 기존에 만들었던 View를 재활용하기 때문에 메모리 측면에서 부담이 덜어지게 됩니다.

    뒤에서도 다루겠지만, 여기서 재활용은 View만을 재활용한다는 의미이지 데이터까지 모두 재사용 되는 것은 아닙니다.

    꼭 기억해두세요. 데이터가 아닌 View만 재활용!.


    ListView의 동작원리는 굉장히 중요합니다. 이 부분을 정확히 이해하고 넘어가는 걸 적극 추천드립니다.





    ListView의 사용에 관해서는 내용이 많아 분리하도록 하겠습니다.

    그럼 이번 포스팅은 여기서 마치겠습니다.





Designed by Tistory.