Android 에서는 component 들을 widget 이라고 부른다. 이번에 설명 해줄 widget은 ListView에 관한 것 이다.

어떤 data를 List 형태로 보여 주는 동작을 하고 싶을 때 이용 되는 widget 으로 data와 Adapter라는 controller
그리고 Listview가 있어야 한다.

Adapter는 ListView를 control 하기 위해 사용 된다.
어떤 식이냐면 Adapter에는 base method(기본 동작 함수)로 getCount() 라는 함수가 있다. 
이녀석은 ListView에 나타날 총 item 목록의 갯수를 알려 준다. 이녀석은 ListView에서 나름 중요 한 녀석(?) 이다.

ListView는 자신의 UI 크기에서 개별 item의 UI 크기  (위 그림에서 "Android 1" 이라고 써져있는 item 하나의 크기)를 계산해서 한 화면에 item을 몇 개를 뿌릴 수 있는지 계산한다. - 위 그림 대로 계산하면 대략 6이 나온다.

ListView가 그리릴 수 있는 내용은 최 상단의 item 의 index 값(item의 실제 순서 정도로 이해 하면된다) +  한 화면에 6개의 item을 그릴 수 있으니까 index + 6이 될 것이다. 이렇게 수행 하면서 scroll 하면 계속해서 갱신 해간다. 최종 목적지는 getCount 에서 얻어진 숫자 만큼 item을 그리도록 한다.

그럼 만약 getCount에서 인위적으로 1 이라고 처리를 한다면 총 갯수가 1개 이므로 볼것도 없이 item은 1개만 그린다.
이런식으로 인위적으로 ListView를 손질 할 수 있다.

Item의 개별적인 display를 담당 하는 Adapter의 method는 getView(...) 이다.
원래는 getView(...)에서 처리를 하는데 Adapter의 종류에 따라 종종 bindView(...) 라는 녀석도 있다.
무튼 getView(...)에 들어 오는 parameter 값을 보면 View 타입으로 convertView 인가? 하는 녀석이 있다.
이녀석이 item (제시된 image에서 Android 1 에 해당)을 display 하는 녀석이다.

그럼 ConvertView라는 녀석은 어디서 할 당 하냐면 getView를 최초 호출시 이값은 null 이다. 이때 newView(...) 라는 녀석을 통해 새로 생성 되도록 되어 있고 여기에는 Layout 파일을 지정 할 수 가 있다. (Adapter 생성시 넣을 수도 있음)

간혹 CustomItemView를 control 하다가 display가 엉망이 되는 경우가 있다고 한다.
(Checkbox 처리를 하다보면 자주 생김)  
원인 부터 알려 주자면 getView는 item 개별적으로 호출 되는데 convertView 이녀석 값은 돌려 쓰기 때문이다.
즉 getView가 호출되면 parameter로 convertView가 들어온다. 1번 item 일때 checkbox를 check 했다면 2번 item의 getView가 호출 되어 convertView를 확인 하면 내가 check 해주지 않아도 check 되어 있다.

해결 책은 converView를 초기화 하던지 if문과 else 문을 쌍으로 써주는 것이다.

ListView에서 data 부분은 대체로 Cursor(SQL query 결과물), Array인데. 둘다 getView에서 data를 꺼내서 convertView에 붙이는 작업을 해야 한다. (뭐 제공되는 Simple... 이런녀석들도 전부 이런 작업을 해준다.)

'Android' 카테고리의 다른 글

Android List에 index를 표시해보자 3편  (0) 2012.02.08
Android List에 index를 표시해보자 2편  (0) 2012.02.08
Android List에 index를 표시해보자 1편  (0) 2012.02.08
Android - Activity  (0) 2011.10.02
Android 시작  (0) 2011.09.20


처음 블로그를 개설 할때는 이런 사태는 예상도 하지 못했었는데...

지금 사정은 매우 복잡한 일상이 되어버린... 아구 졸려라 


'My Stroy' 카테고리의 다른 글

고기 귀신이 들었어...  (0) 2011.11.07
악!!... 딴짓하다 저번주 글을 못썼당.  (0) 2011.10.31
일본 출장...  (0) 2011.10.10
날씨가 쌀쌀한 겨울이이네용.  (0) 2011.10.02
이런 경험 처음...  (0) 2011.09.26


망할 저번주 부터... 줄기차게 해외 출장을 보낸다고 하더니 결국 가는구나~~
짧게 인도를 갈지 길게 일본을 갈지 선택지에서 나는 일본을... (인도음식이 그리도 싫었더냐!! 버럭!)

이제 6일 뒤면 한국이여 빠빠이 

'My Stroy' 카테고리의 다른 글

악!!... 딴짓하다 저번주 글을 못썼당.  (0) 2011.10.31
바쁘 다는 핑계...  (0) 2011.10.20
날씨가 쌀쌀한 겨울이이네용.  (0) 2011.10.02
이런 경험 처음...  (0) 2011.09.26
시골 외진곳의 카페.  (0) 2011.09.19


스터디 스텝상 Activity는 기본으로 이해하고 넘어 가야 하는데...
각종 설명들이 여러군데 퍼져있으므로 어렵게는 이해 할 수 있음.

쉽게 비유를 들자면 C프로젝트 처음에 만들면 xxx.c 파일 안에 있는 void main(xxx) {}; 뭐 이런거와 비슷??
프로그램(프로젝트)를 시작하는 스타트 파일 이라고 생각하면됨!!

Activity는 작업 공간? 인데 화면 단위로 구분 되기도 함.
무슨 소린고하니 화면에 스텝에 따라서 Activity를 만들고 그 화면을 제어 해야함.

Activity는 dalvik 에서 관리 해주는 스텝에 따라 흘러 가게 되어있는데
예를 들어 내가 android 에서 카카오톡 icon을 누르면

(아이콘 누름 -> Launcher Activity 찾음 -> Activity 실행 시킴 -> onCreate(Bundle x) 실행함 ->
onResume() 실행함 -> 화면 보임)


요래 동작 하도록 되어 있음!!

그니까 이걸 이해 해야함 내가 코드를 어디다 짱박아야 하는지 이해 할 수 있는 거임.!

'Android' 카테고리의 다른 글

Android List에 index를 표시해보자 3편  (0) 2012.02.08
Android List에 index를 표시해보자 2편  (0) 2012.02.08
Android List에 index를 표시해보자 1편  (0) 2012.02.08
Android base component - ListView  (0) 2011.10.20
Android 시작  (0) 2011.09.20


올 겨울은 이렇게 되는걸까나?~
깔깔깔~

'My Stroy' 카테고리의 다른 글

바쁘 다는 핑계...  (0) 2011.10.20
일본 출장...  (0) 2011.10.10
이런 경험 처음...  (0) 2011.09.26
시골 외진곳의 카페.  (0) 2011.09.19
IPhone Game (카트라이더)  (0) 2011.09.16


주말에 제천으로 지인의 결혼식 참가 차 다녀온 일이 있었다.
거기서 참으로 어처구니 없는 일 당했는데,
주최측의 잘못인지 예식장의 잘못인지 모르겠지만

무튼... 무슨일인고 하니 식이 다끝나고 사람이 많아서 맨끝에 촬영을 하게 되었드랬다.
그리고 허겁지겁 피로연장으로 이동했는데 뭔가 을씨년스러운게... 식당문을 닫을 듯한 기세였다.
(축의금 낼때 부터 살짝 이상했음 식권이 따로 없는..)

거짓말 조금 보태서 30~40명 되는 인원이 피로연장에서 음식이 이제나오나 저제 나오나 기다리고 있었다는..
(계속 음식 언제 주냐고 질문을 해봤지만 요지는 팀장의 결제가 있어야 한다는...)

대략 30분 기다리고 나니 갑자기 누군가와서는 음식 더이상 제공 안하니까
예식장 밖에 예약한 다른 식당으로 가라는 거였다.
(이건 주최측에서 급하게 잡은거)

근데 되게 멀리서 일부러 축하해주러 온건데... 좀 기분 상해 있는데... 거기다 예식장 밖에서 좀 걸어야 한다는데...
하여간 기분 나쁘고 그렇기도 해서 아무것도 안먹고 급하게 서울로 올라옴. 

서로 융통성이 없어서 생긴 사고인듯 매우 아쉬웠음 ㅠㅠ 

'My Stroy' 카테고리의 다른 글

일본 출장...  (0) 2011.10.10
날씨가 쌀쌀한 겨울이이네용.  (0) 2011.10.02
시골 외진곳의 카페.  (0) 2011.09.19
IPhone Game (카트라이더)  (0) 2011.09.16
바닷가 카페.  (0) 2011.09.15


(구글링 하다가 퍼온 사진임 저작권 문제가 생기면 내리겠음)

지금에 와서야 Android를 이야기 시작 한다는게 많이 늦었다는 생각이 든다.
나는 코딩을 엄청 잘하는 개발자도 아니고, 내 전공이 컴공은 더욱더 아니다. 그래서 하는 말인데...
코드를 좀 쉽게 이야기를 해보고 싶었다는... 비록 말로 끝날지 모르겠지만

비록 Google 에서 Motorola를 인수하면서 좀 많이 걱정 되는 것도 사실이긴 한데 뭐 배워둬서 나쁠껀
없다고 생각이 듬.

각종 블로그나 인터넷 정보에 따르면 Android에 관한 자료들이 무진장? 있을 수도 있고 없을 수도 있고.
무튼 처음 환경 setting 이라던지 기타 내용들은 이미 자세히 나와 있으니까... 여러곳에서 구하시고

기본 준비 내용은 Eclipse, SDK, JDK, 환경변수, Hello Android 정도?



특정 카페를 홍보할 목적은 아님!!
추석 연휴 기간에 내 고향에 있는... 운치는 있고 거리는 멀고, 맛은(미각이...) 모르겠고
후훗~ 그림은 참 좋게 나오는듯
 



빵과 익힌 채소? 빵은 맛나고 채소는 그리 시큼하거나 죽지 않은 느낌... 죠오기 머그컵은 아메리카노~ 좋아 좋아 좋아~
쓰지 않고~ 이맘때 비가 오고 있었는데 테라스에서 비오는거 보면 참 좋은~

'My Stroy' 카테고리의 다른 글

날씨가 쌀쌀한 겨울이이네용.  (0) 2011.10.02
이런 경험 처음...  (0) 2011.09.26
IPhone Game (카트라이더)  (0) 2011.09.16
바닷가 카페.  (0) 2011.09.15
android site 해킹...  (0) 2011.09.05


한창 카트라이더가 유행할때 나름 꾀 잘 하는 유저였다고 자타 공인 인증 받던 필자가
IPhone 에서 카트라이더를 발견? 했더랬다.

조작법은 좀 다르긴 해도 기본 동작이나 맵들이 비슷한 관계로... 쉽게 클리어가 가능 하다.
이 게임이 매력적인건 블루투스를 이용한 네트워크(4명까지)가 된다는 것이다. +ㅁ+ 우앙~

한국 계정으로는 절대 찾을 수 없고 미국 계정에서 나타난다. 후~ 추억을 떠올리며 3 ~ 2 ~ 1 ~ Go!!
 

'My Stroy' 카테고리의 다른 글

이런 경험 처음...  (0) 2011.09.26
시골 외진곳의 카페.  (0) 2011.09.19
바닷가 카페.  (0) 2011.09.15
android site 해킹...  (0) 2011.09.05
기술은 진보 한다!!!  (0) 2011.09.05

한 밤중에 DSLR이 아닌 IPhone 카메라로 찍은거라 잘 보일랑가 모르겠지만.
요기 카페안에는 각종 골동품들?이 짜~안득 있었음.
바닷가 근처이기도 하고, 추석연휴 초반에 펜션에서 놀려고 갔다가 발견 한 곳인데 너무 맘에 들었다.





'My Stroy' 카테고리의 다른 글

시골 외진곳의 카페.  (0) 2011.09.19
IPhone Game (카트라이더)  (0) 2011.09.16
android site 해킹...  (0) 2011.09.05
기술은 진보 한다!!!  (0) 2011.09.05
휴대폰 이야기.  (0) 2011.09.04

+ Recent posts