@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);
/** * deselects an item and removes its position in the selections list * also takes an iterator to remove items from the map * * @param item the item to deselected * @param position the global position (or < 0 if the item is not displayed) * @param entries the iterator which is used to deselect all */ public void deselect(Item item, int position, @Nullable Iterator<Integer> entries) { item.withSetSelected(false); if (entries != null) { entries.remove(); } if (position >= 0) { mFastAdapter.notifyItemChanged(position); } if (mSelectionListener != null) { mSelectionListener.onSelectionChanged(item, false); } }
/** * select's a provided item, this won't notify the adapter * * @param item the item to select * @param considerSelectableFlag true if the select method should not select an item if its not selectable */ public void select(Item item, boolean considerSelectableFlag) { if (considerSelectableFlag && !item.isSelectable()) { return; } item.withSetSelected(true); if (mSelectionListener != null) { mSelectionListener.onSelectionChanged(item, true); } }
/** * internal method to restore the selection state of subItems * * @param item the parent item * @param selectedItems the list of selectedItems from the savedInstanceState */ public static <Item extends IItem> void restoreSubItemSelectionStatesForAlternativeStateManagement(Item item, List<String> selectedItems) { if (item instanceof IExpandable && !((IExpandable) item).isExpanded() && ((IExpandable) item).getSubItems() != null) { List<Item> subItems = (List<Item>) ((IExpandable<Item, ?>) item).getSubItems(); for (int i = 0, size = subItems.size(); i < size; i++) { Item subItem = subItems.get(i); String id = String.valueOf(subItem.getIdentifier()); if (selectedItems != null && selectedItems.contains(id)) { subItem.withSetSelected(true); } restoreSubItemSelectionStatesForAlternativeStateManagement(subItem, selectedItems); } } }
@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);
item.withSetSelected(!selected); view.setSelected(!selected);
/** * selects an item and remembers its position in the selections list * * @param adapter adapter holding this item (or it's parent) * @param item the item to select * @param position the global position (or < 0 if the item is not displayed) * @param fireEvent true if the onClick listener should be called * @param considerSelectableFlag true if the select method should not select an item if its not selectable */ public void select(IAdapter<Item> adapter, Item item, int position, boolean fireEvent, boolean considerSelectableFlag) { if (considerSelectableFlag && !item.isSelectable()) { return; } item.withSetSelected(true); mFastAdapter.notifyItemChanged(position); if (mSelectionListener != null) mSelectionListener.onSelectionChanged(item, true); if (mFastAdapter.getOnClickListener() != null && fireEvent) { mFastAdapter.getOnClickListener().onClick(null, adapter, item, position); } }
for (int i = 0; i < subItems; i++) { if (((IItem) header.getSubItems().get(i)).isSelectable()) { ((IItem) header.getSubItems().get(i)).withSetSelected(select);