/** * 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; } }