일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드 시작하기
- 안드로이드 view
- logcat 사용법
- 안드로이드 스튜디오 설치
- Log.d
- vscode extension 추천
- android color 클래스
- prettier 사용법
- NetworkInfo deprecated
- listview adapter
- android studio 3
- NetworkInfo 대체
- 안드로이드 공부
- NetworkCallback
- prettier vscode
- win10 virtualenv
- 레이아웃
- swift idfa 확인방법
- vscode extenstion
- 안드로이드 스튜디오
- 안드로이드 프로젝트
- 안드로이드 color
- 모듈 배포
- xcode idfa
- android 개발
- 파이썬 의존성
- 안드로이드모듈
- 모듈 관리
- jitpack
- android 튜토리얼
- Today
- Total
세라쌤의 IT 튜토리얼
ListView와 Adapter 본문
ListView
구성 방법
1. 메인 xml에 <ListView> 위젯을 추가
(1) res/layout/activity_main.xml
|
(2) preview 확인
2. res/layout에 아이템 xml 추가
(1) xml 추가하기
(2) 이름 짓기
참고) 이름은 아무거나 지어도 되고(단 소문자만) Root element는 검색기능이 지원된다!
(3) res/layout/item.xml
|
(4) preview 확인
3. Adaper 클래스 추가
(1) java class 추가하기
(2) Superclass는 자바 클래스 생성할 때도 지정할 수 있다. Adapter 종류는 많지만 가장 기본적인 BaseAdapter를 사용해보자.
(3) 추상메서드 오버라이드
클래스를 생성하면 처음에 에러가 난다. BaseAdapter는 Adapter 인터페이스를 구현했으나 BaseAdapter 자체는 추상클래스이며, Adapter 인터페이스가 선언한 추상 메서드 4개를 구현하지 않고 남겨두었다. 이 추상메서드 4개를 우리가 직접 오버라이드해야 한다.
(4) MyAdapter.java
|
- 생성자 : 생성자는 사용자 마음대로 정의해도 된다. 하지만 getView() 내부의 inflate() 인자로 Context가 들어가야해서 액티비티에게 Context를 받아오도록하는 인자를 선언해두었다. 'String...' 가변인자는 선택사항이다. 보통은 텍스트나 이미지를 한데 묶은 VO(Value Object) 클래스를 따로 정의하고 Activity단에서 ArrayList 형태로 넘겨준다.
- int getCount() : ListView에 넣을 아이템들의 개수다. 여기서는 배열의 원소 개수로 지정하였다.
- Object getItem(int i) : ListView의 아이템 중 i 번째 아이템을 리턴하도록한다. 이때 리턴자료형은 Object형이므로 어떠한 형태든 상관없지만 보통은 VO 단일 인스턴스를 리턴하도록한다. 여기서는 VO를 사용하지 않았으므로 String을 return 하였다.
- long getItemId(int i) : i번째 아이템의 id를 리턴한다. 이것은 사용자가 지정하는 id이기때문에 어떠한 정수를 넘겨주어도 괜찮다. 단 R에 등록되어있는 id가 있을 경우 해당 id를 리턴해주면 나중에 getId()를 통해 받아오기 쉽다.
- View getView(int i, View view, ViewGroup viewGroup) : 어댑터의 주인공 메서드다. 이곳에 ListView에 붙일 View를 생성한다. inflate()을 사용하여 View를 동적으로 생성하고 이를 리턴하도록한다. 그 사이 텍스트나 이미지, 배경 등을 세팅할 수 있다.
4. MainActivity 완성 (최종)
|
결과
장점 : 다른 리스트형 뷰들에 비해 손쉽게 구현할 수 있다.
단점 : 스크롤링 기능이 내장되어있긴 하지만 아이템이 많아질 경우 아이템이 화면에 보일 차례가 될 때마다 매번 생성하므로 스크롤 시 딜레이가 발생한다. 이를 개선하기 위해서는 생성된 View를 버리지 않고 재사용하는 ViewHolder 패턴이 필요하다.
'Android' 카테고리의 다른 글
안드로이드 Log와 Logcat 사용방법 (1) | 2019.03.26 |
---|---|
안드로이드 스튜디오 단축키 (0) | 2019.03.26 |
안드로이드 Color 지정하기 (0) | 2019.03.25 |
android:layout_width와 android:layout_height (0) | 2019.03.25 |
TextView (0) | 2019.03.25 |