public ActionModeHelper(FastAdapter<Item> fastAdapter, int cabMenu, ActionMode.Callback callback) { this.mFastAdapter = fastAdapter; this.mCabMenu = cabMenu; this.mCallback = callback; this.mInternalCallback = new ActionBarCallBack(); this.mSelectExtension = fastAdapter.getExtension(SelectExtension.class); if (mSelectExtension == null) { throw new IllegalStateException("The provided FastAdapter requires the `SelectExtension` or `withSelectable(true)`"); } }
public ActionModeHelper(FastAdapter<Item> fastAdapter, int cabMenu, ActionItemClickedListener actionItemClickedListener) { this.mFastAdapter = fastAdapter; this.mCabMenu = cabMenu; this.mInternalCallback = new ActionBarCallBack(); this.actionItemClickedListener = actionItemClickedListener; this.mSelectExtension = fastAdapter.getExtension(SelectExtension.class); if (mSelectExtension == null) { throw new IllegalStateException("The provided FastAdapter requires the `SelectExtension` or `withSelectable(true)`"); } }
/** * Uses Reflection to collapse all items if this adapter uses expandable items * * @param fastAdapter */ private static void collapseIfPossible(FastAdapter fastAdapter) { try { Class c = Class.forName("com.mikepenz.fastadapter.expandable.ExpandableExtension"); if (c != null) { IAdapterExtension extension = fastAdapter.getExtension(c); if (extension != null) { Method method = extension.getClass().getMethod("collapse"); method.invoke(extension); } } } catch (Exception ignored) { // } }
@Override public boolean apply(@NonNull IAdapter lastParentAdapter, int lastParentPosition, @NonNull IItem item, int position) { if (position != -1) { SelectExtension extension = (SelectExtension) adapter.getExtension(SelectExtension.class); if (extension != null) { extension.deselect(position); } } else { item.withSetSelected(false); } return true; } }, false);
/** * counts the selected items in the adapter underneath an expandable item, recursively * * @param adapter the adapter instance * @param header the header who's selected children should be counted * @return number of selected items underneath the header */ public static <T extends IItem & IExpandable> int countSelectedSubItems(final FastAdapter adapter, T header) { SelectExtension extension = (SelectExtension) adapter.getExtension(SelectExtension.class); if (extension != null) { Set<IItem> selections = extension.getSelectedItems(); return countSelectedSubItems(selections, header); } return 0; }
public boolean setSelectionAtPosition(int position, boolean fireOnClick) { if (mDrawerBuilder.mRecyclerView != null) { SelectExtension<IDrawerItem> select = getAdapter().getExtension(SelectExtension.class); if (select != null) { select.deselect(); select.select(position, false); notifySelect(position, fireOnClick); } } return false; }
/** * deselects all selections */ public void deselect() { SelectExtension<Item> selectExtension = mFastAdapter.getExtension(SelectExtension.class); if (selectExtension == null) { return; } for (Item item : AdapterUtil.getAllItems(mFastAdapter)) { selectExtension.deselect(item); } mFastAdapter.notifyDataSetChanged(); }
/** * select all items * * @param considerSelectableFlag true if the select method should not select an item if its not selectable */ public void select(boolean considerSelectableFlag) { SelectExtension<Item> selectExtension = mFastAdapter.getExtension(SelectExtension.class); if (selectExtension == null) { return; } for (Item item : AdapterUtil.getAllItems(mFastAdapter)) { selectExtension.select(item, considerSelectableFlag); } mFastAdapter.notifyDataSetChanged(); }
@Override public boolean apply(@NonNull IAdapter lastParentAdapter, int lastParentPosition, @NonNull IItem item, int position) { if (item.getIdentifier() == identifier) { if (position != -1) { SelectExtension extension = (SelectExtension) adapter.getExtension(SelectExtension.class); if (extension != null) { if (select) { extension.select(position); } else { extension.deselect(position); } } } else { item.withSetSelected(select); } return true; } return false; } }, true);
@Test public void select() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(100)); SelectExtension<TestItem> selectExtension = adapter.getExtension(SelectExtension.class); assertThat(selectExtension).isEqualTo(this.selectExtension); assertThat(selectExtension.getSelectedItems().size()).isEqualTo(0); assertThat(selectExtension.getSelections().size()).isEqualTo(0); selectExtension.select(10); assertThat(selectExtension.getSelectedItems().size()).isEqualTo(1); assertThat(selectExtension.getSelectedItems().iterator().next().getIdentifier()).isEqualTo(10); assertThat(selectExtension.getSelections().size()).isEqualTo(1); assertThat(selectExtension.getSelections().iterator().next()).isEqualTo(10); }
/** * set the current selection in the drawer * NOTE: This will trigger onDrawerItemSelected without a view if you pass fireOnClick = true; * * @param identifier the identifier to search for * @param fireOnClick true if the click listener should be called */ public void setSelection(long identifier, boolean fireOnClick) { SelectExtension<IDrawerItem> select = getAdapter().getExtension(SelectExtension.class); if (select != null) { select.deselect(); select.selectByIdentifier(identifier, false, true); //we also have to call the general notify Pair<IDrawerItem, Integer> res = getAdapter().getItemById(identifier); if (res != null) { Integer position = res.second; notifySelect(position != null ? position : -1, fireOnClick); } } }
for (int i = 0; i < subItems; i++) { if (((IItem) header.getSubItems().get(i)).isSelectable()) { SelectExtension extension = (SelectExtension) adapter.getExtension(SelectExtension.class); if (extension != null) { if (select) {
mFastAdapter.withMultiSelect(true); mFastAdapter.withSelectOnLongClick(false); selectExtension = mFastAdapter.getExtension(SelectExtension.class);