// Get the number of selected bookmarks.
int numberOfSelectedBookmarks = bookmarksListView.getCheckedItemCount();
- // Adjust the ActionMode and the menu according to the number of selected bookmarks.
- if (numberOfSelectedBookmarks == 1) { // One bookmark is selected.
- // List the number of selected bookmarks in the subtitle.
- mode.setSubtitle(getString(R.string.selected) + " 1");
-
- // Show the `Move Up`, `Move Down`, and `Edit` options.
- moveBookmarkUpMenuItem.setVisible(true);
- moveBookmarkDownMenuItem.setVisible(true);
- editBookmarkMenuItem.setVisible(true);
-
- // Update the enabled status of the move icons.
- updateMoveIcons();
- } else { // More than one bookmark is selected.
- // List the number of selected bookmarks in the subtitle.
- mode.setSubtitle(getString(R.string.selected) + " " + numberOfSelectedBookmarks);
-
- // Hide non-applicable `MenuItems`.
- moveBookmarkUpMenuItem.setVisible(false);
- moveBookmarkDownMenuItem.setVisible(false);
- editBookmarkMenuItem.setVisible(false);
- }
+ // Only process commands if at least one bookmark is selected. Otherwise, a context menu with 0 selected bookmarks is briefly displayed.
+ if (numberOfSelectedBookmarks > 0) {
+ // Adjust the ActionMode and the menu according to the number of selected bookmarks.
+ if (numberOfSelectedBookmarks == 1) { // One bookmark is selected.
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(getString(R.string.selected) + " 1");
+
+ // Show the `Move Up`, `Move Down`, and `Edit` options.
+ moveBookmarkUpMenuItem.setVisible(true);
+ moveBookmarkDownMenuItem.setVisible(true);
+ editBookmarkMenuItem.setVisible(true);
- // Do not show the select all menu item if all the bookmarks are already checked.
- if (bookmarksListView.getCheckedItemCount() == bookmarksListView.getCount()) {
- selectAllBookmarksMenuItem.setVisible(false);
- } else {
- selectAllBookmarksMenuItem.setVisible(true);
+ // Update the enabled status of the move icons.
+ updateMoveIcons();
+ } else { // More than one bookmark is selected.
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(getString(R.string.selected) + " " + numberOfSelectedBookmarks);
+
+ // Hide non-applicable `MenuItems`.
+ moveBookmarkUpMenuItem.setVisible(false);
+ moveBookmarkDownMenuItem.setVisible(false);
+ editBookmarkMenuItem.setVisible(false);
+ }
+
+ // Do not show the select all menu item if all the bookmarks are already checked.
+ if (bookmarksListView.getCheckedItemCount() == bookmarksListView.getCount()) {
+ selectAllBookmarksMenuItem.setVisible(false);
+ } else {
+ selectAllBookmarksMenuItem.setVisible(true);
+ }
}
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- // Instantiate the common variables.
- int selectedBookmarkPosition;
+ // Declare the common variables.
int selectedBookmarkNewPosition;
final SparseBooleanArray selectedBookmarksPositionsSparseBooleanArray;
+ // Initialize the selected bookmark position.
+ int selectedBookmarkPosition = 0;
+
switch (item.getItemId()) {
case R.id.move_bookmark_up:
// Get the array of checked bookmark positions.
selectedBookmarksPositionsSparseBooleanArray = bookmarksListView.getCheckedItemPositions();
- // Store the position of the selected bookmark. Only one bookmark is selected when `move_bookmark_up` is enabled.
- selectedBookmarkPosition = selectedBookmarksPositionsSparseBooleanArray.keyAt(0);
+ // Get the position of the bookmark that is selected. If other bookmarks have previously been selected they will be included in the sparse boolean array with a value of `false`.
+ for (int i = 0; i < selectedBookmarksPositionsSparseBooleanArray.size(); i++) {
+ // Check to see if the value for the bookmark is true, meaning it is currently selected.
+ if (selectedBookmarksPositionsSparseBooleanArray.valueAt(i)) {
+ // Only one bookmark should have a value of `true` when move bookmark up is enabled.
+ selectedBookmarkPosition = selectedBookmarksPositionsSparseBooleanArray.keyAt(i);
+ }
+ }
// Calculate the new position of the selected bookmark.
selectedBookmarkNewPosition = selectedBookmarkPosition - 1;
// Get the array of checked bookmark positions.
selectedBookmarksPositionsSparseBooleanArray = bookmarksListView.getCheckedItemPositions();
- // Store the position of the selected bookmark. Only one bookmark is selected when `move_bookmark_down` is enabled.
- selectedBookmarkPosition = selectedBookmarksPositionsSparseBooleanArray.keyAt(0);
+ // Get the position of the bookmark that is selected. If other bookmarks have previously been selected they will be included in the sparse boolean array with a value of `false`.
+ for (int i = 0; i < selectedBookmarksPositionsSparseBooleanArray.size(); i++) {
+ // Check to see if the value for the bookmark is true, meaning it is currently selected.
+ if (selectedBookmarksPositionsSparseBooleanArray.valueAt(i)) {
+ // Only one bookmark should have a value of `true` when move bookmark down is enabled.
+ selectedBookmarkPosition = selectedBookmarksPositionsSparseBooleanArray.keyAt(i);
+ }
+ }
// Calculate the new position of the selected bookmark.
selectedBookmarkNewPosition = selectedBookmarkPosition + 1;
// Get the array of checked bookmark positions.
selectedBookmarksPositionsSparseBooleanArray = bookmarksListView.getCheckedItemPositions();
- // Get the position of the selected bookmark. Only one bookmark is selected when `edit_bookmark_down` is enabled.
- selectedBookmarkPosition = selectedBookmarksPositionsSparseBooleanArray.keyAt(0);
+ // Get the position of the bookmark that is selected. If other bookmarks have previously been selected they will be included in the sparse boolean array with a value of `false`.
+ for (int i = 0; i < selectedBookmarksPositionsSparseBooleanArray.size(); i++) {
+ // Check to see if the value for the bookmark is true, meaning it is currently selected.
+ if (selectedBookmarksPositionsSparseBooleanArray.valueAt(i)) {
+ // Only one bookmark should have a value of `true` when move edit bookmark is enabled.
+ selectedBookmarkPosition = selectedBookmarksPositionsSparseBooleanArray.keyAt(i);
+ }
+ }
// Move the `Cursor` to the selected position and find out if it is a folder.
bookmarksCursor.moveToPosition(selectedBookmarkPosition);