[Menu #3] Context Menu를 ListView에 연결시 Position가져오기.

Posted by [하늘이]
2010. 12. 15. 22:51 IT/Android[안드로이드]
반응형
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());
........
}

반응형