GOAL 
  • ListActivity 에서 ContextMenu를 띄운다.
  • ContextMenuItem을 선택하여 특정 Position의 ListViewItem에 대한 작업을 수행한다.
Try 1.

ListView를 ContextMenu에 등록하여, LongClick Event발생시 ContextMenu를 띄우게 한다.registerForContextMenu(getListView());  

Result : Failed

이방법은 LongClick을 받은 Item Position을 알아낼 방법이 없다.
( 아시는 분 손좀? ^^ )

Try 2.


ListView setOnItemLongClickEventListener() 에서, 
openContextMenu(view) 를 통해서 ContextMenu를 Open 하고, 그 View를 이용해 Position을 가져 온다. 

Result : Failed

openContextMenu의 파라미터가 되기 위해서는 registerContextMenu를 통해서 registering을 해야 하는데,
Adapter에서 View를 만들때 register를 한다고 해도, unregister를 해야 하는 시점이 불분명하고,
비직관적이다. 

Try 3.
 

registerForContextMenu(getListViewI()) 를 통해 ListView의 ContextMenu를 Open
getListView().setOnItemLongClickListener를 등록하여, Last Long Clicked Position을 저장
ContextMenuItemSelected가 호출 될때 저장된 Position을 사용하여 Task 수행

Result : Success


그래도 뭔가 찜찜하다. 뭔가 좋은 방법이 있을것 같은데.. 아시는 분 없나요? ㅎㅎ



 

+ Recent posts