Using contextmenu with listview in android Using contextmenu with listview in android android android

Using contextmenu with listview in android


you should register the LISTVIEW for the context menu.

Here's the source.

for onCreate():

 registerForContextMenu(lv);

And to access the selected item during long click:

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {   if (v.getId() == R.id.lv) {       ListView lv = (ListView) v;       AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;       YourObject obj = (YourObject) lv.getItemAtPosition(acmi.position);       menu.add("One");       menu.add("Two");       menu.add("Three");       menu.add(obj.name);   }}


To get the item from the ListView item selected refer to ContextMenuInfo object (see last implemented method below). Full solution as follows:

1) register ListView for context menu in ListActivity class

@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // ...    getListView().setAdapter(mAdapter);    registerForContextMenu(getListView());}

1a) if you have complex View on your list you might need to enable long click on each list view in Adapter class

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {    View view = convertView;    if (view == null) {        RelativeLayout layout = (RelativeLayout) LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);        itemLayout = layout;        itemLayout.setLongClickable(true);    }    // ...    return view;}

2) implement onCreateContextMenu() and onContextItemSelected() in ListActivity class

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {    super.onCreateContextMenu(menu, v, menuInfo);    AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;    String title = ((MyItem) mAdapter.getItem(info.position)).getTitle();    menu.setHeaderTitle(title);    menu.add(Menu.NONE, MENU_CONTEXT_DELETE_ID, Menu.NONE, DELETE_TEXT);}@Overridepublic boolean onContextItemSelected(MenuItem item) {    switch (item.getItemId()) {    case MENU_CONTEXT_DELETE_ID:        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();        Log.d(TAG, "removing item pos=" + info.position);        mAdapter.remove(info.position);        return true;    default:        return super.onContextItemSelected(item);    }}


1) First we use

 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {    super.onCreateContextMenu(menu, v, menuInfo);    menu.add("View Selected Text");}

2)list--is ref if ListView

registerForContextMenu(list);

3)

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {    super.onCreateContextMenu(menu, v, menuInfo);    if(item.getTitle().equals("View Selected Text"))    {        AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();        Contact c=array.get(menuInfo.position);        Toast.makeText(List.this, "Selected String is :-"+c.toString(), Toast.LENGTH_SHORT).show();    }}