/** * 插入数组,不会触发任何事情 * * @param object The object to insert into the array. * @param index The index at which the object must be inserted. */ public void insertAll(Collection<? extends T> object, int index) { synchronized (mLock) { mObjects.addAll(index, object); } int dataCount = object == null ? 0 : object.size(); if (mObserver != null) mObserver.onItemRangeInserted(index + 1, dataCount); if (mNotifyOnChange) notifyItemRangeInserted(headers.size() + index + 1, dataCount); log("insertAll notifyItemRangeInserted " + ((headers.size() + index + 1) + "," + (dataCount))); }
/** * 插入数组,不会触发任何事情 * * @param object The object to insert into the array. * @param index The index at which the object must be inserted. */ public void insertAll(T[] object, int index) { synchronized (mLock) { mObjects.addAll(index, Arrays.asList(object)); } int dataCount = object == null ? 0 : object.length; if (mObserver != null) mObserver.onItemRangeInserted(index + 1, dataCount); if (mNotifyOnChange) notifyItemRangeInserted(headers.size() + index + 1, dataCount); log("insertAll notifyItemRangeInserted " + ((headers.size() + index + 1) + "," + (dataCount))); }
/** * 插入,不会触发任何事情 * * @param object The object to insert into the array. * @param index The index at which the object must be inserted. */ public void insert(T object, int index) { synchronized (mLock) { mObjects.add(index, object); } if (mObserver != null) mObserver.onItemRangeInserted(index, 1); if (mNotifyOnChange) notifyItemInserted(headers.size() + index + 1); log("insert notifyItemRangeInserted " + (headers.size() + index + 1)); }
@Test public void notifyParentRangeInsertedEndList() { Parent<Object> firstInsertedItem = generateParent(true, 3); Parent<Object> secondInsertedItem = generateParent(false, 2); assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); mBaseParents.add(firstInsertedItem); mBaseParents.add(secondInsertedItem); mExpandableRecyclerAdapter.notifyParentRangeInserted(10, 2); verify(mDataObserver).onItemRangeInserted(25, 5); assertEquals(30, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(firstInsertedItem, true, 25); verifyParentItemsMatch(secondInsertedItem, false, 29); }
@Test public void notifyParentInsertedWithInitiallyExpandedItem() { Parent<Object> originalLastParent = mBaseParents.get(9); Parent<Object> insertedItem = generateParent(true, 3); assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(originalLastParent, false, 24); mBaseParents.add(insertedItem); mExpandableRecyclerAdapter.notifyParentInserted(10); verify(mDataObserver).onItemRangeInserted(25, 4); assertEquals(29, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(originalLastParent, false, 24); verifyParentItemsMatch(insertedItem, true, 25); }
@Test public void expandingExpandedWithObjectParentHasNoEffect() { assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(0), true, 0); mExpandableRecyclerAdapter.expandParent(mBaseParents.get(0)); verify(mDataObserver, never()).onItemRangeInserted(anyInt(), anyInt()); assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(0), true, 0); }
@Test public void expandingParentWithIndexAddsChildren() { assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(9), false, 24); mExpandableRecyclerAdapter.expandParent(9); verify(mDataObserver).onItemRangeInserted(25, 3); assertEquals(28, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(9), true, 24); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); initIndex(adapter); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); reset(); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); reset(); }
@Test public void expandingExpandedParentWithIndexHasNoEffect() { assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(0), true, 0); mExpandableRecyclerAdapter.expandParent(0); verify(mDataObserver, never()).onItemRangeInserted(anyInt(), anyInt()); assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(0), true, 0); }
@Test public void expandingParentWithObjectAddsChildren() { assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(9), false, 24); mExpandableRecyclerAdapter.expandParent(mBaseParents.get(9)); verify(mDataObserver).onItemRangeInserted(25, 3); assertEquals(28, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(mBaseParents.get(9), true, 24); }
@Test public void notifyParentRangeInsertedMidList() { Parent<Object> firstInsertedItem = generateParent(true, 3); Parent<Object> secondInsertedItem = generateParent(false, 2); assertEquals(25, mExpandableRecyclerAdapter.getItemCount()); mBaseParents.add(4, firstInsertedItem); mBaseParents.add(5, secondInsertedItem); mExpandableRecyclerAdapter.notifyParentRangeInserted(4, 2); verify(mDataObserver).onItemRangeInserted(10, 5); assertEquals(30, mExpandableRecyclerAdapter.getItemCount()); verifyParentItemsMatch(firstInsertedItem, true, 10); verifyParentItemsMatch(secondInsertedItem, false, 14); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); notifyItemRangeInserted(positionStart + getHeaderViewsCount(), itemCount); }
/** * Adds the specified Collection at the end of the array. * * @param collection The Collection to add at the end of the array. */ public void addAll(Collection<? extends T> collection) { if (mEventDelegate != null) mEventDelegate.addData(collection == null ? 0 : collection.size()); if (collection != null && collection.size() != 0) { synchronized (mLock) { mObjects.addAll(collection); } } int dataCount = collection == null ? 0 : collection.size(); if (mObserver != null) mObserver.onItemRangeInserted(getCount() - dataCount + 1, dataCount); if (mNotifyOnChange) notifyItemRangeInserted(headers.size() + getCount() - dataCount + 1, dataCount); log("addAll notifyItemRangeInserted " + (headers.size() + getCount() - dataCount + 1) + "," + (dataCount)); }
/** * Adds the specified items at the end of the array. * * @param items The items to add at the end of the array. */ public void addAll(T[] items) { if (mEventDelegate != null) mEventDelegate.addData(items == null ? 0 : items.length); if (items != null && items.length != 0) { synchronized (mLock) { Collections.addAll(mObjects, items); } } int dataCount = items == null ? 0 : items.length; if (mObserver != null) mObserver.onItemRangeInserted(getCount() - dataCount + 1, dataCount); if (mNotifyOnChange) notifyItemRangeInserted(headers.size() + getCount() - dataCount + 1, dataCount); log("addAll notifyItemRangeInserted " + ((headers.size() + getCount() - dataCount + 1) + "," + (dataCount))); }
/** * Adds the specified object at the end of the array. * * @param object The object to add at the end of the array. */ public void add(T object) { if (mEventDelegate != null) mEventDelegate.addData(object == null ? 0 : 1); if (object != null) { synchronized (mLock) { mObjects.add(object); } } if (mObserver != null) mObserver.onItemRangeInserted(getCount() + 1, 1); if (mNotifyOnChange) notifyItemInserted(headers.size() + getCount() + 1); log("add notifyItemInserted " + (headers.size() + getCount() + 1)); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); showEmptyView(); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); notifyItemRangeInserted(positionStart + getHeaderCount(), itemCount); }
@Override public void onItemRangeInserted(int positionStart, int itemCount) { super.onItemRangeInserted(positionStart, itemCount); update(); }