@Override
  public boolean onMenuItemClick(MenuItem menuItem) {
    Bookmark item = (Bookmark) mAdapter.getItem(mSelectedPosition);

    switch (menuItem.getItemId()) {
      case R.id.share_message:
        ShareOption.SMS.shareMapObject(getActivity(), item);
        break;

      case R.id.share_email:
        ShareOption.EMAIL.shareMapObject(getActivity(), item);
        break;

      case R.id.share:
        ShareOption.ANY.shareMapObject(getActivity(), item);
        break;

      case R.id.edit:
        editBookmark(mCategory.getId(), item.getBookmarkId());
        break;

      case R.id.delete:
        BookmarkManager.INSTANCE.deleteBookmark(item);
        mAdapter.notifyDataSetChanged();
        break;
    }
    return false;
  }
  @Override
  public void onListItemClick(ListView l, View v, int position, long id) {
    switch (mAdapter.getItemViewType(position)) {
      case BookmarkListAdapter.TYPE_SECTION:
        return;
      case BookmarkListAdapter.TYPE_BOOKMARK:
        final Bookmark bookmark = (Bookmark) mAdapter.getItem(position);
        BookmarkManager.INSTANCE.nativeShowBookmarkOnMap(mCategoryIndex, bookmark.getBookmarkId());
        break;
      case BookmarkListAdapter.TYPE_TRACK:
        final Track track = (Track) mAdapter.getItem(position);
        Framework.nativeShowTrackRect(track.getCategoryId(), track.getTrackId());
        break;
    }

    final Intent i = new Intent(getActivity(), MwmActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
  }
  @Override
  public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    mSelectedPosition = position;
    final Object item = mAdapter.getItem(mSelectedPosition);
    int type = mAdapter.getItemViewType(mSelectedPosition);

    switch (type) {
      case BookmarkListAdapter.TYPE_SECTION:
        // Do nothing here?
        break;

      case BookmarkListAdapter.TYPE_BOOKMARK:
        BottomSheetHelper.Builder bs =
            BottomSheetHelper.create(getActivity(), ((Bookmark) item).getTitle())
                .sheet(R.menu.menu_bookmarks)
                .listener(this);
        if (!ShareOption.SMS.isSupported(getActivity()))
          bs.getMenu().removeItem(R.id.share_message);

        if (!ShareOption.EMAIL.isSupported(getActivity()))
          bs.getMenu().removeItem(R.id.share_email);

        bs.tint().show();
        break;

      case BookmarkListAdapter.TYPE_TRACK:
        BottomSheetHelper.create(getActivity(), ((Track) item).getName())
            .sheet(Menu.NONE, R.drawable.ic_delete, R.string.delete)
            .listener(
                new MenuItem.OnMenuItemClickListener() {
                  @Override
                  public boolean onMenuItemClick(MenuItem menuItem) {
                    BookmarkManager.INSTANCE.deleteTrack((Track) item);
                    mAdapter.notifyDataSetChanged();
                    return false;
                  }
                })
            .tint()
            .show();
        break;
    }

    return true;
  }