/** * add a list of items at the given position within the existing items * * @param position the global position * @param items the items to add */ public FastAdapterDialog<Item> add(int position, List<Item> items) { mItemAdapter.add(position, items); return this; }
/** * static method to retrieve a new `ItemAdapter` * * @return a new ItemAdapter */ public static <Item extends IItem> ItemAdapter<Item> items() { return new ItemAdapter<>(); } }
/** * set a new list of items and apply it to the existing list (clear - add) for this adapter * * @param items the new items to set */ public FastAdapterDialog<Item> set(List<Item> items) { mItemAdapter.set(items); return this; }
/** * update a MiniDrawerItem (after updating the main Drawer) via its identifier * * @param identifier the identifier of the item which was updated */ public void updateItem(long identifier) { if (mDrawer != null && mAdapter != null && mItemAdapter.getAdapterItems() != null && identifier != -1) { IDrawerItem drawerItem = DrawerUtils.getDrawerItem(getDrawerItems(), identifier); for (int i = 0; i < mItemAdapter.getAdapterItems().size(); i++) { if (mItemAdapter.getAdapterItems().get(i).getIdentifier() == drawerItem.getIdentifier()) { IDrawerItem miniDrawerItem = generateMiniDrawerItem(drawerItem); if (miniDrawerItem != null) { mItemAdapter.set(i, miniDrawerItem); } } } } }
mItemAdapter.add(firstVisiblePosition + 1, ImageDummyData.getDummyItem()); return true; case R.id.item_change: for (Integer pos : selectExtension.getSelections()) { SimpleImageItem i = mItemAdapter.getAdapterItem(pos); i.withName("CHANGED"); i.withDescription("This item was modified"); mItemAdapter.set(pos, i); List items = mItemAdapter.getAdapterItems(); if (items.size() > firstVisiblePosition + 3) { mItemAdapter.move(firstVisiblePosition + 1, firstVisiblePosition + 3);
/** * builder to build an adapter out of the given information ;D * * @param context the current context * @return a LibsRecyclerViewAdapter with the libraries */ public FastAdapter adapter(Context context) { Libs libs; if (fields == null) { libs = new Libs(context); } else { libs = new Libs(context, fields); } //apply modifications libs.modifyLibraries(libraryModification); //fetch the libraries and sort if a comparator was set ArrayList<Library> libraries = libs.prepareLibraries(context, internalLibraries, excludeLibraries, autoDetect, checkCachedDetection, sort); //prepare adapter ItemAdapter itemAdapter = new ItemAdapter(); List<LibraryItem> libraryItems = new ArrayList<>(); for (Library library : libraries) { libraryItems.add(new LibraryItem().withLibrary(library).withLibsBuilder(this)); } FastAdapter fastAdapter = FastAdapter.with(itemAdapter); //noinspection unchecked itemAdapter.add(libraryItems); return fastAdapter; }
@Test public void move() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(11)); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(11); TestItem movedItem = itemAdapter.getAdapterItem(0); TestItem changedItem = itemAdapter.getAdapterItem(1); itemAdapter.move(0, 10); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(11); assertThat(movedItem).isEqualTo(itemAdapter.getAdapterItem(10)); assertThat(changedItem).isEqualTo(itemAdapter.getAdapterItem(0)); }
@Test public void clear() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(100)); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(100); itemAdapter.clear(); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(0); }
public void test(List<TestItem> original, List<TestItem> adjusted) { itemAdapter.set(original); FastAdapterDiffUtil.set(itemAdapter, adjusted); Assert.assertEquals(adjusted.size(), itemAdapter.getAdapterItemCount()); for (int i = 0; i < adjusted.size(); i++) { Assert.assertEquals(adjusted.get(i), itemAdapter.getAdapterItem(i)); } } }
@Override protected void onPostExecute(String s) { //remove loader mItemAdapter.clear(); //Add the header if (builder.aboutShowIcon != null && (builder.aboutShowVersion != null || builder.aboutShowVersionName != null || builder.aboutShowVersionCode)) { //add this cool thing to the headerView of our listView mItemAdapter.add(new HeaderItem().withLibsBuilder(builder).withAboutVersionName(versionName).withAboutVersionCode(versionCode).withAboutIcon(icon)); } //add the libs List<LibraryItem> libraryItems = new ArrayList<>(); for (Library library : libraries) { libraryItems.add(new LibraryItem().withLibrary(library).withLibsBuilder(builder)); } mItemAdapter.add(libraryItems); super.onPostExecute(s); //finished loading if (LibsConfiguration.getInstance().getLibTaskCallback() != null) { LibsConfiguration.getInstance().getLibTaskCallback().onLibTaskFinished(mItemAdapter); } //forget the context ctx = null; } }
@Test public void set() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(100)); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(100); }
itemAdapter = items(); itemAdapter.getItemFilter().withFilterPredicate(new IItemAdapter.Predicate<SimpleItem>() { @Override public boolean filter(SimpleItem item, CharSequence constraint) { itemAdapter.getItemFilter().withItemFilterListener(this); itemAdapter.add(items);
itemAdapter = new ItemAdapter<>(itemListImpl); fastAdapter = FastAdapter.with(itemAdapter); fastAdapter.withSelectable(true); itemAdapter.setNewList(generateUnsortedList());
/** * removes all items of this adapter */ public FastAdapterDialog<Item> clear() { mItemAdapter.clear(); return this; } }
/** * moves an item within the list from a position to a position * * @param fromPosition the position global from which we want to move * @param toPosition the global position to which to move * @return this */ public FastAdapterBottomSheetDialog<Item> move(int fromPosition, int toPosition) { mItemAdapter.move(fromPosition, toPosition); return this; }
/** * ctor */ public FastItemAdapter() { itemAdapter = items(); addAdapter(0, itemAdapter); cacheSizes(); }
@Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { // remember the from/to positions IItem item = FastAdapter.getHolderAdapterItem(viewHolder); if (item instanceof IDraggable) { if (((IDraggable) item).isDraggable()) { if (mFrom == RecyclerView.NO_POSITION) { mFrom = viewHolder.getAdapterPosition(); } mTo = target.getAdapterPosition(); } } if (mCallbackItemTouch == null) { RecyclerView.Adapter adapter = recyclerView.getAdapter(); ItemAdapter itemAdapter = null; if (adapter instanceof FastItemAdapter) { itemAdapter = ((FastItemAdapter) adapter).getItemAdapter(); } else if (adapter instanceof FastAdapter) { //TODO this logic only works for the adapter at position 0 --> in the past it also only worked for the outer adapter itemAdapter = (ItemAdapter) ((FastAdapter) adapter).adapter(0); } if (itemAdapter != null) { itemAdapter.move(itemAdapter.getFastAdapter().getHolderAdapterPosition(viewHolder), itemAdapter.getFastAdapter().getHolderAdapterPosition(target)); return true; } throw new RuntimeException("SimpleDragCallback without an callback is only allowed when using the ItemAdapter or the FastItemAdapter"); } return mCallbackItemTouch.itemTouchOnMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); // information to the interface }
@Override public void itemsFiltered(@Nullable CharSequence constraint, @Nullable List<SimpleItem> results) { Toast.makeText(SimpleItemListActivity.this, "filtered items count: " + itemAdapter.getAdapterItemCount(), Toast.LENGTH_SHORT).show(); }