creating a menu after a long click event on a list view

First you need to register your context menu on list view.

lv = (ListView) findViewById(R.id.list_view);
registerForContextMenu(lv);

Then, just override activity methods.

/**
 * MENU
 */

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
      super.onCreateContextMenu(menu, v, menuInfo);
      if (v.getId()==R.id.list_view) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.menu_list, menu);
      }
}

@Override
public boolean onContextItemSelected(MenuItem item) {
      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
      switch(item.getItemId()) {
         case R.id.add:
         // add stuff here
            return true;
          case R.id.edit:
            // edit stuff here
                return true;
          case R.id.delete:
        // remove stuff here
                return true;
          default:
                return super.onContextItemSelected(item);
      }
}

Here is an example of menu_list.xml file (you have to put the file in the res/menu folder).

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">

       <item android:id="@+id/add"
              android:icon="@android:drawable/ic_menu_add"
              android:title="@string/menu_add" />

      <item android:id="@+id/edit"
              android:icon="@android:drawable/ic_menu_edit"
              android:title="@string/menu_edit" />

       <item android:id="@+id/delete"
            android:icon="@android:drawable/my_icon_delete"
             android:title="@string/menu_delete" />

</menu>

Hope it will help.

Leave a Comment