package com.nononsenseapps.notepad.ui.list; import android.support.v7.app.AppCompatActivity; import android.support.v7.view.ActionMode; import java.util.Set; import java.util.TreeSet; public class SelectedItemHandler { private final TreeSet<Long> selected = new TreeSet<>(); private final AppCompatActivity activity; private final ActionMode.Callback actionModeCallback; private ActionMode actionMode = null; public SelectedItemHandler(AppCompatActivity activity, ActionMode.Callback actionModeCallback) { this.activity = activity; this.actionModeCallback = actionModeCallback; } public boolean isItemSelected(long id) { return selected.contains(id); } public void toggleSelection(long id) { if (actionMode == null) { actionMode = activity.startSupportActionMode(actionModeCallback); } if (selected.contains(id)) { selected.remove(id); } else { selected.add(id); } if (selected.isEmpty()) { actionMode.finish(); } else { actionMode.setTitle(String.valueOf(selected.size())); actionMode.invalidate(); } } public Set<Long> getSelected() { return selected; } public void clear() { selected.clear(); if (actionMode != null) { actionMode.finish(); actionMode = null; } } public boolean isActiveSelectionMode() { return actionMode != null; } }