그리드 뷰(GridView)
먼저 그리드 뷰를 만들기 위해 activity_main.xml 파일에 GridView위젯을 추가하였다.
그 후 Adapter를 정의하기위해 ImageAdapter라는 클래스를 만들었고
그리드 뷰의 항목으로 간단한 텍스트가 아닌 이미지를 사용하고자 하는 경우에는 그리드 뷰의 항목으로 이미지를 공급하는 ImageAdapter를 BaseAdapter로부터 파생하여 정의하였다.
이미지는 adapter클래스에서 배열로 생성했고, 그 후 BaseAdapter의 getCount(), getItem(), getItemId(), getView() 메소드를 재정의 했다.
먼저 getCount()메서드는 항목의 총 개수를 반환하기 위해 mThumbIds 배열의 크기를 반환한다.
getItem()는 특정 위치의 항목을 반환하기 위해 mThumbIds 배열의 지정된 위치의 항목을 반환한다.
getItemId()는 특정 위치의 항목 아이디를 반환하는 것인데, 여기서는 배열의 위치(순서)를 항목의 아이디로 간주한다.
getView()는 AdapterView의 항목 뷰를 반환한다. 즉 그리드뷰의 들어가는 item 뷰를 반환한다는 의미이다.
position은 해당 항목의 위치를 나타낸다.
convertView는 재활용할 뷰이다.
이것은 ListView 또는 GridView에서 스크롤 될 때, 화면을 벗어난 항목의 뷰를 재사용하려고함이다.
parent는 이 뷰의 부모 ViewGroup이다.
convertView가 null이면 새로운 ImageView를 생성하고, 그렇지 않으면 재사용한다.
convertView가 null일때, 새로운 ImageView 객체를 생성한다. 부모 ViewGroup의 context를 사용하여 새로운
ImageView를 만든다.
ImageView의 레이아웃 파라미터를 설정한다. 여기서는 200 x 200 크기로 설정한다.
그리고 imageView.scaleType을 중앙에 맞추도록 잘리는 부분은 잘라낸다.
imageView.setPadding(8,8,8,8)
ImageView 주위에 패딩을 설정한다.
ImageView에 해당 위치의 이미지를 설정하고 mTumbIds는 이미지의 리소스 id를 가진 배열이며,
position을 사용하여 해당 위치의 이미지를 가져온다.
최종적으로 설정된 이미지뷰를 가져온다. 이것은 각 항목의 뷰로 사용이 된다.