안드로이드 개발 질문/답변
(글 수 45,052)
몇시간째 글 찾아보고 고민하다가 해결이 안되서 질문 올려봅니다.
onListItemClick(ListView l, View v, int position, long id) 의 경우는 ListView안의 클릭된 View를 v로 받아오기 때문에 정보를 바로 얻을 수 있었습니다. (이때 받아오는 view 안에는 textview가 두개 있고 id가 각각 있어서 id로 정보를 따로 얻을 수 있습니다.)
그런데
registerForContextMenu(getListView()); 와
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 를 이용할 경우
v는 ListView를 받기 때문에 findViewById를 이용하면 무조건 ListView의 첫번째 View의 정보가 나옵니다.
롱클릭한 해당 뷰를 넘겨받으려면 어떻게 해야할까요?
getListView().getSelectedView().findViewById()
getListView().getFocusedChild().findViewById()
등등을 이용해봤는데 NullPointer Exception이 발생하네요
롱클릭한 뷰를 받아낼 방법은 없는 것일까요..?
onListItemClick(ListView l, View v, int position, long id) 의 경우는 ListView안의 클릭된 View를 v로 받아오기 때문에 정보를 바로 얻을 수 있었습니다. (이때 받아오는 view 안에는 textview가 두개 있고 id가 각각 있어서 id로 정보를 따로 얻을 수 있습니다.)
그런데
registerForContextMenu(getListView()); 와
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 를 이용할 경우
v는 ListView를 받기 때문에 findViewById를 이용하면 무조건 ListView의 첫번째 View의 정보가 나옵니다.
롱클릭한 해당 뷰를 넘겨받으려면 어떻게 해야할까요?
getListView().getSelectedView().findViewById()
getListView().getFocusedChild().findViewById()
등등을 이용해봤는데 NullPointer Exception이 발생하네요
롱클릭한 뷰를 받아낼 방법은 없는 것일까요..?
2010.06.23 22:37:07
ListView 의 어댑터의
public View getView(int position, View convertView, ViewGroup parent) 메쏘드에서
convertView.setOnCreateContextMenuListener(listener); 리스너를 각 Row 에 달면,
onCreateContextMenu 에서 View 가 convertView 일텐데요, 그럼, 알 수 있지 않을까요?
2010.06.23 23:48:49
혹시 이거 찾으시는건가요?콘텍스트메뉴의 선택아이템의 정보 얻어오는....예를 들어 리스트중 하나를 꾹 누르고 있으면 그 리스트중 하나를 삭제하거나 추가 하는 ....
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); // 요부분
switch (item.getItemId()) {
case INSERT:
...
...
case DELETE:
...
...
return(true);
}
return(super.onOptionsItemSelected(item));
}
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); // 요부분
switch (item.getItemId()) {
case INSERT:
...
...
case DELETE:
...
...
return(true);
}
return(super.onOptionsItemSelected(item));
}