/** * creates a new FastAdapter with the provided adapters * if adapters is null, a default ItemAdapter is defined * * @param adapter the adapters which this FastAdapter should use * @return a new FastAdapter */ @SuppressWarnings("unchecked") public static <Item extends IItem, A extends IAdapter> FastAdapter<Item> with(A adapter) { FastAdapter<Item> fastAdapter = new FastAdapter<>(); fastAdapter.addAdapter(0, adapter); return fastAdapter; }
/** * creates a new FastAdapter with the provided adapters * if adapters is null, a default ItemAdapter is defined * * @param adapters the adapters which this FastAdapter should use * @return a new FastAdapter */ @SuppressWarnings("unchecked") public static <Item extends IItem, A extends IAdapter> FastAdapter<Item> with(@Nullable Collection<A> adapters, @Nullable Collection<IAdapterExtension<Item>> extensions) { FastAdapter<Item> fastAdapter = new FastAdapter<>(); if (adapters == null) { fastAdapter.mAdapters.add((IAdapter<Item>) items()); } else { fastAdapter.mAdapters.addAll((Collection<IAdapter<Item>>) adapters); } for (int i = 0; i < fastAdapter.mAdapters.size(); i++) { fastAdapter.mAdapters.get(i).withFastAdapter(fastAdapter).setOrder(i); } fastAdapter.cacheSizes(); if (extensions != null) { for (IAdapterExtension<Item> extension : extensions) { fastAdapter.addExtension(extension); } } return fastAdapter; }
@Test public void testAddPreviouslyFilledAdapterPropagatesPossibleTypesToParentFastAdapter() { final TestItem testItem = new TestItem("example name"); ItemAdapter<TestItem> itemAdapter = new ItemAdapter<>(); itemAdapter.add(testItem); FastAdapter<TestItem> adapter = new FastAdapter<>(); adapter.addAdapter(0, itemAdapter); final ViewGroup dummyParent = new FrameLayout(RuntimeEnvironment.application); adapter.onCreateViewHolder(dummyParent, testItem.getType()); } }