/** * forces to remap all possible types for the RecyclerView */ public void remapMappedTypes() { getFastAdapter().clearTypeInstance(); mapPossibleTypes(mItems.getItems()); }
public ModelAdapter<Model, Item> addInternal(int position, List<Item> items) { if (mUseIdDistributor) { getIdDistributor().checkIds(items); } if (items.size() > 0) { mItems.addAll(position, items, getFastAdapter().getPreItemCountByOrder(getOrder())); mapPossibleTypes(items); } return this; }
adapter.mapPossibleTypes(items);
public ModelAdapter<Model, Item> addInternal(List<Item> items) { if (mUseIdDistributor) { getIdDistributor().checkIds(items); } FastAdapter<Item> fastAdapter = getFastAdapter(); if (fastAdapter != null) { mItems.addAll(items, fastAdapter.getPreItemCountByOrder(getOrder())); } else { mItems.addAll(items, 0); } mapPossibleTypes(items); return this; }
/** * set a new list of model and apply it to the existing list (clear - add) for this adapter * NOTE may consider using setNewList if the items list is a reference to the list which is used inside the adapter * * @param items the items to set * @param resetFilter `true` if the filter should get reset * @param adapterNotifier a `IAdapterNotifier` allowing to modify the notify logic for the adapter (keep null for default) * @return this */ public ModelAdapter<Model, Item> setInternal(List<Item> items, boolean resetFilter, @Nullable IAdapterNotifier adapterNotifier) { if (mUseIdDistributor) { getIdDistributor().checkIds(items); } //reset the filter if (resetFilter && getItemFilter().getConstraint() != null) { getItemFilter().performFiltering(null); } for (IAdapterExtension<Item> ext : getFastAdapter().getExtensions()) { ext.set(items, resetFilter); } //map the types mapPossibleTypes(items); //forward set int itemsBeforeThisAdapter = getFastAdapter().getPreItemCountByOrder(getOrder()); mItems.set(items, itemsBeforeThisAdapter, adapterNotifier); return this; }
/** * sets a complete new list of items onto this adapter, using the new list. Calls notifyDataSetChanged * * @param list the new items to set * @param retainFilter set to true if you want to keep the filter applied * @return this */ public ModelAdapter<Model, Item> setNewList(List<Model> list, boolean retainFilter) { List<Item> items = intercept(list); if (mUseIdDistributor) { getIdDistributor().checkIds(items); } //reset the filter CharSequence filter = null; if (getItemFilter().getConstraint() != null) { filter = getItemFilter().getConstraint(); getItemFilter().performFiltering(null); } mapPossibleTypes(items); boolean publishResults = filter != null && retainFilter; if (publishResults) { getItemFilter().publishResults(filter, getItemFilter().performFiltering(filter)); } mItems.setNewList(items, !publishResults); return this; }