/
SelectedItemHandler.java
58 lines (47 loc) · 1.5 KB
/
SelectedItemHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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;
}
}