[Android Tutorial] ListView Example





안드로이드 리스트뷰 https://developer.android.com/guide/topics/ui/layout/listview.html

여러개의 항목을 리스트 형태로, 수직으로 표시하는 위젯

화면이 좁고 손가락으로 터치하는 단말에서는 리스트뷰가 쉽고 직관적임

동질적인 자료를 나열할 때 사용 - 주소록, 설정창 등이 대표적


*위젯, Button, ImageView, FrameLayout, EditText와 같은 화면 구성요소




Data Source / Android Adapter / Adapter View

데이터를 리스트뷰로 표현하기 위해서는 세 가지 요소가 필요



어댑터

원본으로부터 얻은 데이터를 관리

어댑터뷰와 데이터 간의 연결을 제공하고 항목의 집합을 관리하는 기본적 메소드를 선언


어댑터뷰는 표시할 항목 데이터를 직접 관리하지 않고 어댑터 객체로부터 공급받음

표시할 항목의 개수가 매우 많을 수도 있고, 데이터의 원본도 다양할 수 있음

이런 복잡한 데이터를 위젯, 뷰가 직접 관리하는 것은 효율적이지 못하기 때문에 어댑터를 사용



어댑터뷰

데이터를 '직접' 관리하지 않고 어댑터로부터 공급받는 뷰, 유연성이 높다

공급받은 데이터를 화면에 한 아이템으로 보여주는 방식을 사용

리스트뷰는 그림에서 볼 수 있듯 어댑터뷰에 속함. 어댑터 뷰란, 내용이 어댑터에 의해 결정되는 뷰


ex) 리스트뷰, 스피너, 갤러리, 그리드뷰





getView() https://developer.android.com/reference/android/widget/Adapter.html#getView(int, android.view.View, android.view.ViewGroup)

Adapter가 가지고 있는 Data를 어떻게 보여줄지 정의

여기서 리턴하는 뷰가 하나의 아이템으로 디스플레이 됨

TalkBack, Contact 이미지 가져오기, 폰트, bindView, 롱클릭시 처리 등




position: 생성할 항목의 순서값

convertView: 이전에 생성된 차일드뷰

parent: 생성되는 뷰의 부모, 여기서는 리스트뷰



표시할 항목이 많을 때

어댑터와 리스트뷰는 항목 뷰를 지능적으로 관리

원본에 대한 최소한의 정보만 받아두고 씀

필요할 때만 항목뷰를 생성, 다 사용한 뷰도 버리지 않고 최대한 재활용

getView에서 convertView를 리턴하는데 이것이 재사용됨

메모리를 과다하게 사용하지 않으며 이론상 항목뷰를 무한대로 표시할 수 있다



mAdapter.setEditmode()

어댑터가 늘 원본의 변화를 감시하고 있지는 않음

원본 다시 읽고, 뷰를 생성하여 리스트뷰로 재공급



mAdapter.notifyDataSetChanged()

작업중 원본이 변경되더라도 리스트뷰에는 당장 변화가 나타나지 않음. 어댑터가 아직 이 사실을 모르기 때문

원본을 변경했다면 notifyDataSetChanged를 호출하여, 참조중인 원본데이터가 변경되었음을 알려야 함

그러면 어댑터는 데이터를 다시 읽고 생성한 뷰를 재공급



OverScroll https://developer.android.com/reference/android/widget/OverScroller.html

스크롤 범위를 넘어갔을 때의 처리옵션, 오버스크롤

안드로이드 2.3부터 지원, 각 제조사는 다른 방식으로 오버스크롤을 표현(애플의 바운스백)



신고








*1  *···  *19  *20  *21  *22  *23  *24  *25  *26  *27  *···  *504 



категория N
catchP!
AdSense
Android
Carom/3C
Cook
CounterStrike
Cycling N
FIFA ONLINE 3
Music
Soccer
XBOX ONE
Stardew Valley
Storage
[무게실측] 페달마피아 져지/빕숏 키트(P..
[Fouriers] 푸리에 Di2 정션홀더 설치:..
리눅스 노트: Open in Terminal, .deb 설..
[Tacx Neo Smart] 에코폼 스포츠매트 설..
170529, 첫 FTP 테스트: 183.3W / 59kg =..
[Tacx Neo Smart] 탁스 네오스마트 설치..
[삼성 스마트홈] 공기청정기 스마트폰과..
삼성 공기청정기/청소기 5월 럭키박스 이..
삼성 자연가습청정기 개봉기: 블루스카이..
[판매완료] 서벨로 R3(48) 울테그라 + 펄..
[무게실측] 루디 포토닉(Rudy Project Fo..
[판매완료] 자이언트 라이드센스(GIANT R..
[2017 기변] 자이언트 TCR SL 0, 듀라 Di..
그랜트 피터슨, 자전거 영원히 타는 법
피파3, 이탈리아 3232 포메이션: 06인자..
Canyon Ultimate CF EVO 출시: Lightweig..
[팬텀싱어] 마이클리 - 겟세마네(Michael..
[싸이클링 시크릿] 로드 낙차/사고 피하..
[SKT/KT] 3G/LTE APN 설정값: 인터넷, MM..
안드로이드 노트: 컨텐트 프로바이더(CP)..
안드로이드 노트: 서비스, 생존주기, sta..
피파3, 433 전술저장용: 전설C, 월베 메..
안드로이드 노트: 리스트뷰, 어댑터, 어..
윈도우 10, 구글 킵 설치/위치: 작업표시..
옥주현 & 덕양구 이재진 - 난(Ock Joohyu..
Suwon to Gunsan, 2016
[Windows 10] 개인적인 윈도우10 설치 순서
CFG70 리뷰 #4, 체험기간을 마치며: 삼성..
에코브릿지 & 최백호 - 부산에 가면(Eco..
[피파3] 포메이션 저장용: 월베 샤비, 16..
count total 1,778,934, today 256, yesterday 640