private void doChange() { if (mHistory != null) { if (mHistory.action == ACTION_REMOVE) { for (int i = mHistory.items.size() - 1; i >= 0; i--) { FastAdapter.RelativeInfo<Item> relativeInfo = mHistory.items.get(i); if (relativeInfo.adapter instanceof IItemAdapter) { ((IItemAdapter) relativeInfo.adapter).remove(relativeInfo.position); } } } } }
/** * Add a initial DrawerItem or a DrawerItem Array for the Drawer * * @param drawerItems * @return */ public DrawerBuilder addDrawerItems(@NonNull IDrawerItem... drawerItems) { this.getItemAdapter().add(drawerItems); return this; }
@Override public void onNewItems(@NonNull List<Model> newItems, int page) { int size = newItems.size(); List<Item> iitems = new ArrayList<>(size); for (int i = 0; i < size; i++) { iitems.add(mItemFactory.intercept(newItems.get(i))); } mItemAdapter.addInternal(iitems); } }
/** * get all drawerItems of the current drawer * * @return */ public List<IDrawerItem> getDrawerItems() { return mDrawerBuilder.getItemAdapter().getAdapterItems(); }
/** * notifies the fastAdapter about new / removed items within a sub hierarchy * NOTE this currently only works for sub items with only 1 level * * @param position the global position of the parent item * @param previousCount the previous count of sub items * @return the new count of subItems */ public int notifyAdapterSubItemsChanged(int position, int previousCount) { Item item = mFastAdapter.getItem(position); if (item != null && item instanceof IExpandable) { IExpandable expandable = (IExpandable) item; IAdapter adapter = mFastAdapter.getAdapter(position); if (adapter != null && adapter instanceof IItemAdapter) { ((IItemAdapter) adapter).removeRange(position + 1, previousCount); ((IItemAdapter) adapter).add(position + 1, expandable.getSubItems()); } return expandable.getSubItems().size(); } return 0; }
/** * method to replace a previous set header * * @param view * @param padding * @param divider * @param height */ public void setHeader(@NonNull View view, boolean padding, boolean divider, DimenHolder height) { mDrawerBuilder.getHeaderAdapter().clear(); if (padding) { mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withHeight(height).withViewPosition(ContainerDrawerItem.Position.TOP)); } else { mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withHeight(height).withViewPosition(ContainerDrawerItem.Position.NONE)); } //we need to set the padding so the header starts on top mDrawerBuilder.mRecyclerView.setPadding(mDrawerBuilder.mRecyclerView.getPaddingLeft(), 0, mDrawerBuilder.mRecyclerView.getPaddingRight(), mDrawerBuilder.mRecyclerView.getPaddingBottom()); }
/** * Set the initial List of IDrawerItems for the Drawer * * @param drawerItems * @return */ public DrawerBuilder withDrawerItems(@NonNull List<IDrawerItem> drawerItems) { this.getItemAdapter().set(drawerItems); return this; }
/** * Removes all items from drawer */ public void removeAllItems() { mDrawerBuilder.getItemAdapter().clear(); }
/** * replace the current DrawerItems with the new ArrayList. * * @param drawerItems * @param switchedItems */ private void setItems(@NonNull List<IDrawerItem> drawerItems, boolean switchedItems) { //if we are currently at a switched list set the new reference if (originalDrawerItems != null && !switchedItems) { originalDrawerItems = drawerItems; } mDrawerBuilder.getItemAdapter().setNewList(drawerItems); }
/** * helper method to build and set the drawer selection list */ protected void buildDrawerSelectionList() { int selectedPosition = -1; int position = 0; ArrayList<IDrawerItem> profileDrawerItems = new ArrayList<>(); if (mProfiles != null) { for (IProfile profile : mProfiles) { if (profile == mCurrentProfile) { if (mCurrentHiddenInList) { continue; } else { selectedPosition = mDrawer.mDrawerBuilder.getItemAdapter().getGlobalPosition(position); } } if (profile instanceof IDrawerItem) { ((IDrawerItem) profile).withSetSelected(false); profileDrawerItems.add((IDrawerItem) profile); } position = position + 1; } } mDrawer.switchDrawerContent(onDrawerItemClickListener, onDrawerItemLongClickListener, profileDrawerItems, selectedPosition); }
((IItemAdapter) adapter).removeRange(position + 1, expandedItemsCount[0]);
/** * counts the items in the adapter, respecting subitems regardless of there current visibility * * @param adapter the adapter instance * @param countHeaders if true, headers will be counted as well * @return number of items in the adapter */ public static int countItems(final IItemAdapter adapter, boolean countHeaders) { return countItems(adapter.getAdapterItems(), countHeaders, false, null); }
/** * Update a drawerItem at a specific position * * @param drawerItem * @param position */ public void updateItemAtPosition(@NonNull IDrawerItem drawerItem, int position) { if (mDrawerBuilder.checkDrawerItem(position, false)) { mDrawerBuilder.getItemAdapter().set(position, drawerItem); } }
/** * method to remove the header of the list */ public void removeHeader() { mDrawerBuilder.getHeaderAdapter().clear(); //possibly there should be also a reset of the padding so the first item starts below the toolbar }
/** * Remove a drawerItem at a specific position * * @param position */ public void removeItemByPosition(int position) { if (mDrawerBuilder.checkDrawerItem(position, false)) { mDrawerBuilder.getItemAdapter().remove(position); } }
/** * Set a drawerItem at a specific position * * @param drawerItem * @param position */ public void setItemAtPosition(@NonNull IDrawerItem drawerItem, int position) { mDrawerBuilder.getItemAdapter().add(position, drawerItem); }
/** * retrieves a flat list of the items in the adapter, respecting subitems regardless of there current visibility * * @param adapter the adapter instance * @param predicate predicate against which each item will be checked before adding it to the result * @return list of items in the adapter that apply to the predicate */ public static List<IItem> getAllItems(final IItemAdapter adapter, IPredicate predicate) { return getAllItems(adapter.getAdapterItems(), true, false, predicate); }
private void undoChange() { if (mHistory != null) { if (mHistory.action == ACTION_REMOVE) { for (int i = 0, size = mHistory.items.size(); i < size; i++) { FastAdapter.RelativeInfo<Item> relativeInfo = mHistory.items.get(i); if (relativeInfo.adapter instanceof IItemAdapter) { IItemAdapter<?, Item> adapter = (IItemAdapter<?, Item>) relativeInfo.adapter; adapter.addInternal(relativeInfo.position, asList(relativeInfo.item)); if (relativeInfo.item.isSelected()) { mAdapter.select(relativeInfo.position); } } } } } mHistory = null; }
if (ri.item != null && ri.item.isSelected()) { //double verify if (ri.adapter != null && ri.adapter instanceof IItemAdapter) { ((IItemAdapter) ri.adapter).remove(positions.get(i));
/** * Add a drawerItem at the end * * @param drawerItem */ public void addItem(@NonNull IDrawerItem drawerItem) { mDrawerBuilder.getItemAdapter().add(drawerItem); }