[Menu #3] Context Menu를 ListView에 연결시 Position가져오기.
반응형
Context Menu를 Button이나, Image, Text 등의 View에 연결시 크게 문제될 것이 없습니다.
하지만, ListView에 연결해 두고, Context Menu가 실행될 때,
선택된 리스트의 Position을 알아내는 것은 쉽지 않습니다.
메뉴가 생성될 때 호출되는
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
의 인자들을 잘 보시면, 현재 선택된 리스트가 몇번째 녀석인지 알기 쉽지 않죠.
몇번째 리스트가 선택된 상태에서 context 메뉴가
호출되었는지는 아래와 같이 코드를 넣으면, 찾아낼 수 있습니다.
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if(v == getListView()) //getListView()를 그냥 호출한 것으로 ListActivity 내라는 것을 알수 있습니다.
{
int nPosition = ((AdapterView.AdapterContextMenuInfo)menuInfo).position;
........
}
실제로 Debug 모드에서 Break잡고 인자값들을 확인해보면, menuInfo의 Position에 선택되어진 값이 보이지만,
바로 가져올 수 있는 방법은 없습니다. 그래서 위와 같이 해주는 것입니다.
PS.
ListActivit에서 registerForContextMenu 하려면 아래와 같이 하면 됩니다.
처음 사용하시는 분들이 가끔 ListActivity에서는 안된다고 하시는 분이 있어 적습니다.
public class SettingsExplores extends ListActivity {
private Context mContext;
protected void onCreate(Bundle savedInstanceState) {
........
mContext = this;
........
((Activity) mContext).registerForContextMenu(getListView());
........
}
하지만, ListView에 연결해 두고, Context Menu가 실행될 때,
선택된 리스트의 Position을 알아내는 것은 쉽지 않습니다.
메뉴가 생성될 때 호출되는
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
의 인자들을 잘 보시면, 현재 선택된 리스트가 몇번째 녀석인지 알기 쉽지 않죠.
몇번째 리스트가 선택된 상태에서 context 메뉴가
호출되었는지는 아래와 같이 코드를 넣으면, 찾아낼 수 있습니다.
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if(v == getListView()) //getListView()를 그냥 호출한 것으로 ListActivity 내라는 것을 알수 있습니다.
{
int nPosition = ((AdapterView.AdapterContextMenuInfo)menuInfo).position;
........
}
실제로 Debug 모드에서 Break잡고 인자값들을 확인해보면, menuInfo의 Position에 선택되어진 값이 보이지만,
바로 가져올 수 있는 방법은 없습니다. 그래서 위와 같이 해주는 것입니다.
PS.
ListActivit에서 registerForContextMenu 하려면 아래와 같이 하면 됩니다.
처음 사용하시는 분들이 가끔 ListActivity에서는 안된다고 하시는 분이 있어 적습니다.
public class SettingsExplores extends ListActivity {
private Context mContext;
protected void onCreate(Bundle savedInstanceState) {
........
mContext = this;
........
((Activity) mContext).registerForContextMenu(getListView());
........
}
반응형
'IT > Android[안드로이드]' 카테고리의 다른 글
[Toast #1] Toast 기본 출력. (0) | 2010.12.16 |
---|---|
[Filename Sort] File 리스트를 불러와 이름순으로 Sort시키기 (0) | 2010.12.16 |
[Menu #2] 컨텍스트 메뉴 기본 구성하기 (0) | 2010.12.15 |
[Menu #1] 간단한 옵션메뉴 추가 (0) | 2010.12.14 |
[ListView #5] 사용자 Layout을 이용한 List [BaseAdapter 사용] (2) | 2010.12.14 |