@Override
  public void onListItemClick(final ListView l, final View v, final int position, final long id) {
    final Cursor cursor = (Cursor) adapter.getItem(position);
    final ExchangeRate exchangeRate = ExchangeRatesProvider.getExchangeRate(cursor);

    activity.startActionMode(
        new ActionMode.Callback() {
          @Override
          public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
            final MenuInflater inflater = mode.getMenuInflater();
            inflater.inflate(R.menu.exchange_rates_context, menu);

            return true;
          }

          @Override
          public boolean onPrepareActionMode(final ActionMode mode, final Menu menu) {
            mode.setTitle(exchangeRate.getCurrencyCode());
            mode.setSubtitle(
                getString(R.string.exchange_rates_fragment_source, exchangeRate.source));

            return true;
          }

          @Override
          public boolean onActionItemClicked(final ActionMode mode, final MenuItem item) {
            switch (item.getItemId()) {
              case R.id.exchange_rates_context_set_as_default:
                handleSetAsDefault(exchangeRate.getCurrencyCode());

                mode.finish();
                return true;
            }

            return false;
          }

          @Override
          public void onDestroyActionMode(final ActionMode mode) {}

          private void handleSetAsDefault(final String currencyCode) {
            config.setExchangeCurrencyCode(currencyCode);

            WalletBalanceWidgetProvider.updateWidgets(activity, wallet);
          }
        });
  }