/**
   * Called when an action mode item is clicked.
   *
   * @param mode The action mode containing the item that is clicked.
   * @param item The item that is clicked.
   * @return Returns true if the method handles the item clicked.
   */
  @Override
  public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    switch (item.getItemId()) {
      case R.id.mark_read_unread_button:
        for (int i = 0; i < adapter.getItemCount(); i++) {
          if (adapter.isItemChecked(i)) {
            Message[] smses = adapter.getItem(i).getMessages();
            for (Message message : smses) {
              message.setUnread(
                  item.getTitle()
                      .equals(getResources().getString(R.string.conversations_action_mark_unread)));
              database.insertMessage(message);
            }
          }
        }
        adapter.refresh();
        mode.finish();
        return true;
      case R.id.delete_button:
        List<Long> databaseIds = new ArrayList<>();
        for (int i = 0; i < adapter.getItemCount(); i++) {
          if (adapter.isItemChecked(i)) {
            for (Message message : adapter.getItem(i).getMessages()) {
              if (message.getDatabaseId() != null) {
                databaseIds.add(message.getDatabaseId());
              }
            }
          }
        }

        Long[] databaseIdsArray = new Long[databaseIds.size()];
        databaseIds.toArray(databaseIdsArray);
        deleteMessages(databaseIdsArray);
        mode.finish();
        return true;
      default:
        return false;
    }
  }