티스토리 뷰
이번 포스팅에서는 지난 포스팅에 이어 ListView 에 text + image 를 출력하는 방법에 대해 알아보자.
ListView 에 image 를 추가하기 위해 custom adapter 와 view holder 에 대해 설명할 것이다.
참고로, 지난 포스팅에서는 ListView 에 text 목록을 출력하는 방법에 대해 알아 보았다.
[Android/UI] - ListView (2) - ListView 에 text 출력하기
Custom adapter
지난 포스팅에서는 ListView 에 text 를 출력하기 위해 adapter 의 개념을 알아보고 ArrayAdapter 를 직접 사용했다.
ListView 에 text + image 를 출력하기 위해서는 adapter 를 custom 하게 만들어 줘야 한다.
Adapter 는 다음과 같이 나눌 수 있다.
이번 예제에서는 BaseAdapter 와 ArrayAdapter 를 이용한 custom adapter 를 만들 것이다.
◼ Adapter : AdapterView(ListView, GridView, Spinner, Gallery) 와 데이터간의 bridge(다리) 역할을 하는 interface
◼ ListAdapter : 리스트뷰와 데이터간의 bridge(다리) 역할을 하는 확장 interface
◼ SpinnerAdapter : 스피너와 데이터간의 bridge(다리) 역할을 하는 확장 interface
◼ BaseAdapter :어댑터에 필요한 기본적인 기능을 구현한 공통 adapter class
◼ SimpleAdapter :XML 파일의 정적인 데이터를 이용한 adapter class
◼ CursorAdapter :데이터베이스의 cursor 를 이용한 adapter class
◼ ArrayAdapter :배열 데이터를 이용한 adapter class
ViewHolder
ViewHolder 는 각 layout 객체에 존재하는 view 를 보관하는 holder 객체다.
ListView 는 inflate를 최소화 하기 위해서 뷰를 재활용 하는데, 이 때 findViewById 를 매번 호출 해야한다.
이로 인한 성능저하를 피하기 위해 ItemView 의 각 요소를 바로 엑세스 할 수 있도록 저장해두고 사용한다.
하단의 코드를 보면서 각 방법의 차이를 생각해보자!
◼ 매번 inflate 하기
- getView() 가 호출될 때 마다 새로운 view 를 생성하는 방법.
- List item 이 많으면 많을수록 느려진다.
◼ ConvertView 재사용 하기
- ConvertView 는 재사용이 가능하도록 설계되어있기 때문에 null 체크를 통하여 infalating 했던 view 에 대해서는 해당 작업을 생략하는 방법.
- List item 이 많아도 느려지지 않는다.
◼ ViewHolder 사용하기
- ViewHolder 를 통해 findViewById 까지 최소화 하는 방법.
- f indViewById 는 실제 메모리를 상당히 사용하게 되어 이를 줄이는 작업으로 성능을 향상 시킬 수 있다.
Source code
https://github.com/parkho79/ListView_2
'Android > UI' 카테고리의 다른 글
ListView (5) - ListView item click 시 context menu 출력하기 (0) | 2020.12.17 |
---|---|
ListView (4) - ListView item 의 click 처리하기 (0) | 2020.12.04 |
ListView (2) - ListView 에 text 출력하기 (0) | 2020.11.05 |
ListView (1) (0) | 2020.10.28 |
RelativeLayout (0) | 2019.11.06 |
- Total
- Today
- Yesterday
- RoomDatabase
- 리워드앱
- onCreateContextMenu
- registerForContextMenu
- onContextItemSelected
- android flag activity
- 안드로이드 인텐트
- mPANDO
- Intent
- android intent
- android task
- android activity flag
- 리워드 어플
- 안드로이드 서비스
- StringUtils
- p2e
- task 생성
- 앱테크
- notifyDataSetChanged
- BroadcastReceiver
- WEMIX
- 무료채굴
- bindservice
- StartService
- 채굴앱
- 무료 채굴
- M2E
- Android Service
- 앱테크 추천
- task
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |