@Override public void onSelectionChanged(SimpleItem item, boolean selected) { Log.i("FastAdapter", "SelectedCount: " + mFastAdapter.getSelections().size() + " ItemsCount: " + mFastAdapter.getSelectedItems().size()); } });
@Override public boolean onClick(View v, IAdapter<SimpleItem> adapter, @NonNull SimpleItem item, int position) { Toast.makeText(v.getContext(), "SelectedCount: " + mFastAdapter.getSelections().size() + " ItemsCount: " + mFastAdapter.getSelectedItems().size(), Toast.LENGTH_SHORT).show(); return false; } });
@Override public void saveInstanceState(@Nullable Bundle savedInstanceState, String prefix) { if (savedInstanceState == null) { return; } Set<Item> selections = mFastAdapter.getSelectedItems(); long[] selectionsArray = new long[selections.size()]; int i = 0; for (Item item : selections) { selectionsArray[i] = item.getIdentifier(); i++; } //remember the selections savedInstanceState.putLongArray(BUNDLE_SELECTIONS + prefix, selectionsArray); }
/** * helper method to get all selections from the ItemAdapter's original item list * * @return a Set with the selected items out of all items in this itemAdapter (not the listed ones) */ public Set<Item> getSelectedItems() { if (mOriginalItems != null) { Set<Item> selections = new HashSet<>(); for (int i = 0, size = mOriginalItems.size(); i < size; i++) { Item item = mOriginalItems.get(i); if (item.isSelected()) { selections.add(item); } } return selections; } else { return mItemAdapter.getFastAdapter().getSelectedItems(); } }
@Test public void select() throws Exception { adapter.withSelectable(true); itemAdapter.set(TestDataGenerator.genTestItemList(100)); assertThat(adapter.getSelectedItems().size()).isEqualTo(0); assertThat(adapter.getSelections().size()).isEqualTo(0); adapter.select(10); assertThat(adapter.getSelectedItems().size()).isEqualTo(1); assertThat(adapter.getSelectedItems().iterator().next().getIdentifier()).isEqualTo(10); assertThat(adapter.getSelections().size()).isEqualTo(1); assertThat(adapter.getSelections().iterator().next()).isEqualTo(10); }