본문 바로가기
안드로이드

[안드로이드] GirdView에서 아이템 클릭시, OnItemClick() 메소드 수행 후 getView() 호출 이유(?)

by 호군 2011. 8. 9.
반응형


안드로이드 인사이드에 질문한 내용

원문 : http://www.androidside.com/bbs/board.php?bo_table=B49&wr_id=47127


안녕하세요.
GridView에서 아이템 클릭 할 경우, OnItemClick() 메소드가 호출되잖아요?
이후에 getView() 메소드가 호출되는 이유를 아시나요?
OnItemClick() 메소드 내부에 어떤 동작도 하지 않으면, getView()는 호출되지 않지만,
OnItemClick() 메소드 내부에 'GridView와 관련있는 UI변경 소스코드'가 있으면,
getView()를 4번이나 호출해주네요. 그것도 0번째 View만.. 4번 호출합니다.
OnItemClick() 메소드 내에는 Visibility 설정만하는데...  
그리고 GridView에 focus가 줬을 때 빼앗을 때 역시 호출이 되네요.
정확한 이유를 아시는 분 댓글 좀 달아주세요.


문제상황
1. 동일 Layout에 A GridView와 B GridView가 있음.
2. A GridView에 Adapter를 설정함. (B GridView 역시 설정함)
3. A GridView에 OnItemClickListener를 등록함. (B GridView 역시 설정함)
4. OnItemClick() 메소드에는 'GridView와 관련있는 UI 변경 소스코드'가 있음 (Visibility 설정) 
   (B GridView에는 UI관련 소스코드는 없음)
5. A GridView의 아이템을 클릭함.
6. OnItemClick() 메소드 호출 후, A GridView에 설정한 Adpater의 getView() 함수가 4번 호출됨.
7. B GridView에 설정한 Adapter의 getView 메소드 역시 4번 호출됨.


나의 추측
제 생각에는 onMeasure(), onLayout()과 관련이 있다고 생각이 듭니다.
변경된 내용이 있으면서 호출이 되고, 각각 두번씩 호출이 된 것 같네요.
GridView를 상속받고 테스트해보면 되지만, 정말 순수하게 공부 할 때와 일을 할 때는 다른 것 같네요(T.T)


테스트를 해보셨거나, 문제를 아시는분, 또는 해결방법을 아시는 분은 답글 부탁드립니다.

 

반응형