public boolean useTextGlyphs() { return textDelegate == null && composition.getCharacters().size() > 0; }
/** * Adds an {@link AdapterDelegate}. * <b>This method automatically assign internally the view type integer by using the next * unused</b> * <p> * Internally calls {@link #addDelegate(int, boolean, AdapterDelegate)} with * allowReplacingDelegate = false as parameter. * * @param delegate the delegate to add * @return self * @throws NullPointerException if passed delegate is null * @see #addDelegate(int, AdapterDelegate) * @see #addDelegate(int, boolean, AdapterDelegate) */ public AdapterDelegatesManager<T> addDelegate(@NonNull AdapterDelegate<T> delegate) { // algorithm could be improved since there could be holes, // but it's very unlikely that we reach Integer.MAX_VALUE and run out of unused indexes int viewType = delegates.size(); while (delegates.get(viewType) != null) { viewType++; if (viewType == FALLBACK_DELEGATE_VIEW_TYPE) { throw new IllegalArgumentException( "Oops, we are very close to Integer.MAX_VALUE. It seems that there are no more free and unused view type integers left to add another AdapterDelegate."); } } return addDelegate(viewType, false, delegate); }
/** * Must be called from {@link RecyclerView.Adapter#getItemViewType(int)}. Internally it scans all * the registered {@link AdapterDelegate} and picks the right one to return the ViewType integer. * * @param items Adapter's data source * @param position the position in adapters data source * @return the ViewType (integer). Returns {@link #FALLBACK_DELEGATE_VIEW_TYPE} in case that the * fallback adapter delegate should be used * @throws NullPointerException if no {@link AdapterDelegate} has been found that is * responsible for the given data element in data set (No {@link AdapterDelegate} for the given * ViewType) * @throws NullPointerException if items is null */ public int getItemViewType(@NonNull T items, int position) { if (items == null) { throw new NullPointerException("Items datasource is null!"); } int delegatesCount = delegates.size(); for (int i = 0; i < delegatesCount; i++) { AdapterDelegate<T> delegate = delegates.valueAt(i); if (delegate.isForViewType(items, position)) { return delegates.keyAt(i); } } if (fallbackDelegate != null) { return FALLBACK_DELEGATE_VIEW_TYPE; } throw new NullPointerException( "No AdapterDelegate added that matches position=" + position + " in data source"); }
Assert.assertTrue(manager.delegates.get(0) == d1); Assert.assertEquals(0, manager.getViewType(d1)); Assert.assertEquals(1, manager.delegates.size()); Assert.assertEquals(-1, manager.getViewType(d1)); Assert.assertTrue(manager.delegates.get(0) == d2); Assert.assertEquals(1, manager.delegates.size()); Assert.assertEquals(0, manager.delegates.size()); Assert.assertEquals(-1, manager.getViewType(d2));
private void export() { SparseArrayCompat<AppInfo> checkedApps = adapter.getCheckedApps(); final int size = checkedApps.size(); AppInfo[] appInfos = new AppInfo[size]; for (int i = 0; i < size; i++) { appInfos[i] = checkedApps.valueAt(i); } mPresenter.export(appInfos); }