안드로이드 개발 질문/답변
(글 수 45,052)
1. activity class
2. bseadapter class
activity에서 baseadapte을 이용해 커스텀 리스트를 만들었습니다. 리스트에는 버튼이 있는데,
activity에서 리스트의 버튼클릭에 대한 이벤트와 리스트클릭에 대한 이벤트를 따로 주고 싶습니다.
어떻게 구현 해야 될지 간단한 소스없을까요?
2. bseadapter class
activity에서 baseadapte을 이용해 커스텀 리스트를 만들었습니다. 리스트에는 버튼이 있는데,
activity에서 리스트의 버튼클릭에 대한 이벤트와 리스트클릭에 대한 이벤트를 따로 주고 싶습니다.
어떻게 구현 해야 될지 간단한 소스없을까요?
2010.09.16 18:10:54
글쎄요.... 꼭 Activity에서 해야할 필요가 있는지 저는 이해가 잘 안가긴 하는데요....
context만 잘 넘겨줘도 거의 할걸 다할수 있고...
어쨋든 원하신다면 이런 방법은 있습니다.
1. Adapter에 inner Interface를 정의한다.
(OnButtonClickListener 라고 하고 안에 구현되는 메소드는 onButtonClick(int position, View v) 라고 합니다.)
2. Adapter에 OnButtonClickListener의 변수를 만들고 getter와 setter를 만든다.
3. Adapter에 button.setOnClickListener를 이용해서 다음과 같이 리스너를 만든다.
button.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(mOnButtonClickListener != null){
mOnButtonClickListener.onButtonClick(position, v);
}
}
});
4. Activity에서 adapter에 setOnButtonClickListener를 이용해서 버튼 클릭시의 동작을 set한다.
button.setOnButtonClickListener(new OnButtonClickListener(){
public void onButtonClick(int position, View v){
// 하고싶은 일....
}
});
context만 잘 넘겨줘도 거의 할걸 다할수 있고...
어쨋든 원하신다면 이런 방법은 있습니다.
1. Adapter에 inner Interface를 정의한다.
(OnButtonClickListener 라고 하고 안에 구현되는 메소드는 onButtonClick(int position, View v) 라고 합니다.)
2. Adapter에 OnButtonClickListener의 변수를 만들고 getter와 setter를 만든다.
3. Adapter에 button.setOnClickListener를 이용해서 다음과 같이 리스너를 만든다.
button.setOnClickListener(new OnClickListener(){
public void onClick(View v){
if(mOnButtonClickListener != null){
mOnButtonClickListener.onButtonClick(position, v);
}
}
});
4. Activity에서 adapter에 setOnButtonClickListener를 이용해서 버튼 클릭시의 동작을 set한다.
button.setOnButtonClickListener(new OnButtonClickListener(){
public void onButtonClick(int position, View v){
// 하고싶은 일....
}
});
2010.09.16 18:33:22
어댑터를 Activity 하나에서만 쓴다면
그냥 setter 하나 두셔서 CustomActivity 전달해주고 냅다 호출하면 됩니다.
근데 이렇게 되면 저 어댑터를 여러군데서 쓴다고 했을때
Activity 자체 상속구조를 또 만들어야 하겠죠....
서로 연관성이 커져서 뭔가 바뀌면 같이 바뀌게 되는겁니다.
또다른 방법으로는 Handler를 넘겨주는 방법도 있습니다.
미리 핸들러를 하나 만들어두고 특정 메시지를 받으면 컨트롤 동기화 동작을 하게 만들어두고
버튼 클릭때 핸들러한테 메세지 보내면 되죠. (sendMessage)
그냥 setter 하나 두셔서 CustomActivity 전달해주고 냅다 호출하면 됩니다.
근데 이렇게 되면 저 어댑터를 여러군데서 쓴다고 했을때
Activity 자체 상속구조를 또 만들어야 하겠죠....
서로 연관성이 커져서 뭔가 바뀌면 같이 바뀌게 되는겁니다.
또다른 방법으로는 Handler를 넘겨주는 방법도 있습니다.
미리 핸들러를 하나 만들어두고 특정 메시지를 받으면 컨트롤 동기화 동작을 하게 만들어두고
버튼 클릭때 핸들러한테 메세지 보내면 되죠. (sendMessage)
리스트 항목의 경우 엑티비티에서 listView.setOnItemClickListener 주시면 됩니다.