안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
ListAitivity 를 상속받은 Activity에서 custom adapter를 통해서 각 row아이템에 버튼을 두개, 텍스트 하나씩 달았습니다.
custom adapter는 ArrayAdapter<String>를 상속 받았고, getView 에서 LayoutInflater를 사용했습니다.
getView(...) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row_item, null);
String p = items.get(position);
TextView text = (TextView) v.findViewById(R.id.text);
text.setText(p);
Button Btn1 = (Button) v.findViewById(R.id.btn1);
Button Btn2 = (Button) v.findViewById(R.id.btn2);
return v;
}
그래서 리스트는 생성은 되었는데요.
문제는 각 버튼을 눌렸을때 어떻게 이벤트를 받아야 할지 모르겠습니다.
(리스트는 아예 클릭이 안되는데, 제가 원하는게 버튼만 눌리길 원하므로 오히려 잘된 부분입니다.)
Activity 에서 어느 row 아이템의 어느 버튼이 눌렸는지에 따라 처리를 하고 싶은데, 어떻게 해야 하나요?
getView에서 Btn1.setOnClickListener()를 하면 onClick는 호출이 되지만,
List에서 몇번째 아이템의 버튼이 눌려졌는지 알수가 없네요.
Activity에서 onListItemClick, onItemClick 등은 버튼을 누를때 호출이 안되네요.
고수님들의 조언 부탁드립니다.
감사합니다.
2009.11.09 17:48:19
// 에에... 버튼에 대한 인덱스를 찾으시는거였군요;;;;
// 이건 리스트 인덱스... ㅎㅎㅎ;;;;
private OnItemClickListener m_listener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
// arg2 가 찾으시는 인덱스입니다.
}
};
2009.11.09 17:59:25
향긋한소리// 답변감사합니다. Button 이벤트로 호출하라는 말씀이 setOnClickListener를 사용하라는 말씀이신거죠?
어떤 리스트 아이템인지는 좀더 고민이 필요하겠네요..
2009.11.09 18:00:29
matt99//답변감사합니다. 버튼을 누를 경우에는 OnItemClickListener 의 onItemClick()이 호출이 안되더라구요.
리스트를 누를경우에는 호출이 됩니다. 제가 알고 싶은것은 버튼을 누를때~~
2009.11.09 19:25:23
좋은방법인지는 잘 모르겠는데요.
Button 상속받아서 멤버로 position을 추가해서 getView에서 생성한 Button객체의 position 멤버에 저장하는 방법을 생각중입니다.
그리고 어떤 ListItem을 클릭 했냐가 문제인데.. 좀 돌아 가는 방법일지는 모르나.. Adapter를 초기화 할 때 ListView를 넘겨 줘서 Adapter에서 ListView에서 어떤 것이 선택 됐는지를 찾아 위에서 호출한 곳에서 사용을 하면 될 듯 합니다..
이거 않되네요.. ;;; 죄송합니다..;;아.. Handler를 이용해도 쉽게 해결 될 수 있을 것 같네요.. 위에 방법은 좀 노가다.. Handler는 좀 고급기술?? ㅋ ;;;;;
음.. Handler는 않될려나?? ;; 함 해보세요.. 될거 같기한데.. 확신은 못하겠네요.. ㅋ