TrackList: Fix crashes in selection mode #1723
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #1711
The long click crash happened, because we didn't check whether we are already in selection mode.
The context menu item crash happened in
setAllSelected
, because item count != view holder count. That was a design error of me that the SparseBooleanArray uses the view holder positions, which change their contents, as the keys. So now I switched to using the trackIds, which are stored as Integers in the database, so we can easily convert them to long and back. This also simplifies thegetSelectedIds
method. The values fromgetSelectedPositions
don't get used in the TrackListActivity, so we can just use null.In regards to the
recyclerview-selection
library you mentioned, I deliberately decided against it, becauseI won't reimplement the selection mode using this library, but if someone gets along with the API and wants to implement this, feel free to :)