일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- 레이아웃
- 서비스
- edwith
- IOS
- 리니어 레이아웃
- 프로젝트
- 뷰
- 텍스트뷰 스크롤
- 상대 레이아웃
- 코드리뷰
- 텍스트뷰 자동 스크롤
- 안드로이드 스튜디오
- 스낵바
- 드로어블
- 안드로이드
- RecyclerView
- 부스트코스
- 제약 레이아웃
- SceneDelegate
- 코틀린
- 테이블_레이아웃
- 아이폰
- textview auto scroll
- 안드로이드_프로그래밍
- 액션바
- 프로그래밍
- 수명주기
- 데이터베이스
- Swift
- Today
- Total
듀다의 성장개발로그
[부스트코스] 안드로이드 프로그래밍 11 - 리스트뷰, 스피너, 그리드뷰 본문
안녕하세요 오늘은 부분 화면으로 사용하기 좋은 리스트뷰에 대해서 이야기하겠습니다.
리스트뷰는 안의 아이템들을 일렬로 나열하고, 하나를 선택할 수 있는 위젯입니다.
리스트뷰처럼 여러 아이템을 다루며 그 중 하나를 선택하는 위젯을 '선택 위젯'이라고 하는데요,
이 선택 위젯은 다른 위젯과 다르게, '어댑터'라는 것이 존재하며, 뷰가 아닌 어댑터가 데이터를 관리합니다.
또한, 어댑터가 각각의 아이템으로 보여줄 뷰까지 생성시킵니다.
어댑터가 데이터도 관리하고 뷰도 관리하는 것이지요.
스피너는 프로그램에서 많이 보셨을 바로 그것입니다.
위 그림처럼 선택할 수 있는 목록을 보여주고 선택한 것을 표시하는 것인데요, 이것을 안드로이드에서는 '스피너'라는 이름으로 표현합니다.
스피너도 목록 중에서 하나를 선택하는 것이니 선택 위젯에 포함됩니다. 스피너도 역시 어댑터를 사용하지요.
그리드뷰는 리스트뷰와 유사한 위젯인데, 아이템을 한 줄로만 보여주는 리스트뷰와 다르게 여러 열로, 격자 형태로 보여주는 위젯입니다.
androd:numColumns로 칼럼 개수를 정하면 한 화면에서 정해진 칼럼 개수만큼 나눠진 리스트를 볼 수 있습니다.
사용법은 리스트뷰와 유사합니다.
공통적인 사용법은 다음과 같습니다.
우선 어댑터가 정의되어 있어야 합니다. 일반적으로는 BaseAdapter를 상속한 새 어댑터를 만들어 사용합니다. 새 어댑터에 필요한 기능을 추가해줍니다. 직접 Adapter 클래스를 정의하지 않는 경우에는 ArrayAdapter가 많이 쓰입니다.
그리고 어댑터의 addItem메소드로 아이템으로 보여줄 뷰를 생성하고(생성은 생성자를 인자로 넣으면 가능합니다.)
리스트뷰에 어댑터를 붙여주면 뷰들이 추가됩니다.
만약 이벤트 처리를 하고 싶다면 리스트뷰에 리스너를 달아 주면 됩니다.
이벤트 처리 시에도 물론 어댑터를 이용해 각 아이템에 접근합니다.
- 리스트뷰의 각 아이템으로 보이는 레이아웃에도 프레임레이아웃이나 상대레이아웃을 사용할 수 있을까요?
- 프레임 레이아웃이나 상대 레이아웃도 뷰를 상속한 하나의 뷰이기 때문에 리스트뷰의 아이템으로 레이아웃을 넣을 수 있습니다. - 어댑터 안에 정의한 ArrayList 객체 안에 들어가는 원소의 자료형은 어떤 것이든 가능한 걸까요?
- 자바와 관련된 문제인데요, 8개 기본 타입을 제외하고는 모두 가능합니다. - 스피너도 리스트뷰를 만들 때처럼 어댑터를 직접 만들어 설정할 수 있을까요?
- 네, 어댑터를 직접 만들어서 설정할 수 있습니다. - 스피너의 한 항목에 보이는 뷰가 이미지 하나와 텍스트뷰 하나가 되도록 만들 수도 있을까요?
- 이미지 하나와 텍스트뷰 하나를 가지고 하나의 레이아웃을 만들어 그것을 스피너가 보여주도록 하면 만들 수 있습니다. - 그리드뷰의 각 아이템으로 보이는 레이아웃에도 프레임레이아웃이나 상대레이아웃을 사용할 수 있을까요?
- 1번과 마찬가지로, 프레임 레이아웃이나 상대 레이아웃도 뷰를 상속한 하나의 뷰이기 때문에 그리드뷰의 아이템으로 레이아웃을 넣을 수 있습니다. - 그리드뷰의 numColumns 속성값을 1로 만들어주면 리스트뷰와 동일하게 보일까요?
- 다른 속성값에 따른 세부적인 차이는 있겠지만, 동일한 화면을 만들 수 있습니다.
'안드로이드 > 부스트코스' 카테고리의 다른 글
[부스트코스] 안드로이드 프로그래밍 12 - 화면 전환 기초 (0) | 2020.02.17 |
---|---|
[부스트코스] 안드로이드 프로그래밍 - 프로젝트 B 코드 리뷰 (0) | 2020.02.17 |
[부스트코스] 안드로이드 프로그래밍 10 - 인플레이션 (0) | 2020.02.14 |
[부스트코스] 안드로이드 프로그래밍 09 - 나인패치 이미지와 비트맵 버튼 (0) | 2020.02.14 |
[부스트코스] 안드로이드 프로그래밍 08 - 토스트 (0) | 2020.02.12 |