XML에 보면 레이아웃이외에 View를 이용해서 화면을 꾸밀 수 있다. AdapterView라는것이 있는데
AdapterView라는것은 여러개의 항목을 다양한 형식으로 나열하고 선택 할 수 있는 기능을 제공하는 뷰 라고 보면된다.
AdapterView에는 리스트뷰(ListView) 와 그리드뷰(GridView)가 있다. 그리스트 뷰는 수직으로 나열 시키는 방식이고, 그리드 뷰는 격자형태로 나열 시키는 방식이다.
예로 리스트뷰는 sns등에서 위에서 아래로 스크롤 되는 형식으로 생각하면되고, 그리드뷰는 구글에서 화장실 타일마냥 격자 형식으로 된것이라 생각하면 이해하기 쉽다.
여기서 중요한것은 AdapterView 표시할 항목 데이터를 직접 관리하지 않고, 어댑터라는 객체로부터 공급는다.
즉 AdapterView(ListView, GridView) <--> Adapter --> 데이터 원본 이 형식으로 이어지는것이다.
그렇다면 Adapter란 무엇일까?
위에서 설명한거처럼 데이터를 관리하며 데이터 원본과 어댑터뷰(ListView, GridView) 사이의 중계 역할이다.
그러면 어떻게 데이터 항목을 표시하는것일까?
어댑터뷰가 어댑터를 사용하기 위해서는 먼저 데이터 원본이 어댑터에 설정되어야 하고, 어댑터뷰에는 어댑터가 설정되야하고, 어댑터뷰는 항목을 표시하기 위해서 먼저 표시할 항목의 총 개수를 알 필요있으니 이 때, 어댑터 뷰는 어댑터의 getCount()란 메소드를 통해 현재 어뎁터가 관리하는 데이터 항목의 총 개수를 반환한다. 그리고, 어댑터 뷰는 어댑터의 getView()란 메소드를 통해서 화면에 실제로 표시할 항목뷰를 얻고, 이를 화면에 표시하게된다.
또한 사용자가 어댑터뷰의 특정 위치의 항목을 선택하였을 때, 어댑터뷰는 선택된 항목, 항목ID, 항목뷰를 어댑터의 getItem(), getItemId(), getView() 메소드를 통해 얻어와서 이를 항목선택 이벤트 처리기에 넘겨준다.
요약하면, 어댑터뷰는 어댑터에 정의된 인터페이스를 바탕으로 필요한 정보를 요청하여 항목뷰를 화면에 표시하거나 선택된 항목뷰를 처리합니다.
이제 예제를 보며 좀더 이해해보도록 하자.
먼저 리스트뷰부터 코드를 알아보도록 하자.
xml에 다음과 같이 작성하면 사진과 같은 화면이 나올것이다.
리스트뷰를 적으면 기본적으로 나오는 화면이니 무언가 잘못된건 아니니 걱정하지 않아도된다.
다음은 MainActivity에 다음과 같이 작성해준다.

이제 에뮬레이터를 작동시키면 다음과 같은 화면이 출력될것이다.

처음 리스트뷰를 xml에 작성했을때와 다른 화면이 나온걸 볼 수있다. 이로써 어탭터과 리스트뷰가 잘 연결되어 데이터 원본을 문제없이 출력한것이다.
만일 ActivityMainBinding이 부분이 에러가 난다면 뷰바인딩이 되지 않은것이니 설정해주면 해결될 것이다.
다음은 그리드뷰에 관한 코드를 보도록 하자.
먼저 xml에 다음과 같이 코드를 작성하면 화면과같은 형식으로 출력이 될것이다.

그 후에 MainActivity에 다음과 같이 작성을 해준다.
각 리스트뷰와 코드를 비교해보면 어탭터를 객체에 연결하는 부분이 리스트냐 그리드냐의 차이만 있을뿐이다.
이제 실행을 시키면 다음과 같은 화면이 나올것이다.

여기까지가 리스트뷰와 그리드뷰의 기본적인 코드 이용사항이다.
다음엔 커스텀뷰와 리사이클 뷰에 대해 정리해보겠다.