protected void setUpRecyclerView(RecyclerView recyclerView) {
adapter = new SelectableCardsAdapter();
adapter.setItems(generateItems());
recyclerView.setAdapter(adapter);
selectionTracker =
new SelectionTracker.Builder<>(
"card_selection",
recyclerView,
new SelectableCardsAdapter.KeyProvider(adapter),
new SelectableCardsAdapter.DetailsLookup(recyclerView),
StorageStrategy.createLongStorage())
.withSelectionPredicate(SelectionPredicates.createSelectAnything())
.build();
adapter.setSelectionTracker(selectionTracker);
selectionTracker.addObserver(
new SelectionTracker.SelectionObserver<Long>() {
@Override
public void onSelectionChanged() {
if (selectionTracker.getSelection().size() > 0) {
if (actionMode == null) {
actionMode = startSupportActionMode(CardSelectionModeActivity.this);
}
actionMode.setTitle(String.valueOf(selectionTracker.getSelection().size()));
} else if (actionMode != null) {
actionMode.finish();
}
}
});
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
private void setupSelectionTracker(final Bundle savedInstanceState) {
tracker = new SelectionTracker.Builder<>(
SELECTION_ID,
binding.threadList,
new ThreadOverviewItemKeyProvider(threadOverviewAdapter),
new ThreadOverviewItemDetailsLookup(binding.threadList),
StorageStrategy.createStringStorage()
).withSelectionPredicate(SelectionPredicates.createSelectAnything()).build();
threadOverviewAdapter.setTracker(tracker);
tracker.addObserver(new SelectionTracker.SelectionObserver<String>() {
@Override
public void onSelectionChanged() {
toggleActionMode();
}
public void onSelectionRestored() {
toggleActionMode();
}
});
tracker.onRestoreInstanceState(savedInstanceState);
}