Java源码示例:androidx.recyclerview.selection.StorageStrategy

示例1
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));
}
 
示例2
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);
}