안드로이드 개발 질문/답변
(글 수 45,052)
리스트뷰는 대부분이 리스트어댑터를 사용해서 구현합니다.
근데 리스트클릭시 이벤트를 주는 문제에 생각을 해봤는데..
리스트액티비티를 상속받은 메인클래스에서 이벤트를 주거나 아님 리스트어댑터에서 클릭이벤트를 줍니다.
둘다 잘 동작이 되는데 어떤 차이가 있는지 또 어떤걸 써야 좋은지 궁금합니다.
또, setOnClick을 쓸때와 setOnItemClick 을 쓸때의 차이점이 궁금합니다.
답변부탁드립니다.
근데 리스트클릭시 이벤트를 주는 문제에 생각을 해봤는데..
리스트액티비티를 상속받은 메인클래스에서 이벤트를 주거나 아님 리스트어댑터에서 클릭이벤트를 줍니다.
둘다 잘 동작이 되는데 어떤 차이가 있는지 또 어떤걸 써야 좋은지 궁금합니다.
또, setOnClick을 쓸때와 setOnItemClick 을 쓸때의 차이점이 궁금합니다.
답변부탁드립니다.
2010.12.22 12:44:22
이벤트의 노드 차이가 발생됩니다.
adapter 쪽에서 이벤트 처리를 하면 List 에서는 이벤트처리를 안합니다.
가까운 예로.. adapter 에서 getView 쪽에서 이벤트 처리를 하면 List 가 클릭 되었을때 리스트 전체 색상이 변하지 않는다는거죠..
OnItemClick 이 발생되면 parent , view , position 값들이 들어 오는데 이것을 사용하여 List 쪽에서 child 객체에 대한 핸들링을 할 수 있습니다.
2010.12.22 14:54:46
답변감사합니다. 질문하나만 더 할게요.
님의 설명을 듣고 selector가 안먹는게 getView에서 이벤트처리를 해서 그런것같다는 생각에 메인클래스에서 onListItemClick메소드를 오버라이드 해서 했는데 아예 안먹습니다.로그값이 안찍히는게 아예 메소드를 안먹는것 같고요.
ListView 객체를 생성해서 리스너를 달아줘봤는데 setOnScrollListener는 잘 먹히는데 setOnItemClickListener는 먹히질 않습니다.
혹시 왜 그런지 아시나요?
님의 설명을 듣고 selector가 안먹는게 getView에서 이벤트처리를 해서 그런것같다는 생각에 메인클래스에서 onListItemClick메소드를 오버라이드 해서 했는데 아예 안먹습니다.로그값이 안찍히는게 아예 메소드를 안먹는것 같고요.
ListView 객체를 생성해서 리스너를 달아줘봤는데 setOnScrollListener는 잘 먹히는데 setOnItemClickListener는 먹히질 않습니다.
혹시 왜 그런지 아시나요?
2010.12.22 15:00:42
http://developer.android.com/reference/android/widget/AdapterView.html
서머리 부분에 보시면 interface 부분에 대한 설명이 나와 있습니다. 참고 하시면 될거 같고..
왜 리스터가 동작안하는지에 대해서는 소스가 공개 되어 있는 상황이 아니기 때문에 가타부타 말할 부분이 없네요..ㅠㅠ



