Exemple #1
0
  private void addAllInternal(T[] newItems) {
    final boolean forceBatchedUpdates = !(mCallback instanceof BatchedCallback);
    if (forceBatchedUpdates) {
      beginBatchedUpdates();
    }

    mOldData = mData;
    mOldDataStart = 0;
    mOldDataSize = mSize;

    Arrays.sort(newItems, mCallback); // Arrays.sort is stable.

    final int newSize = deduplicate(newItems);
    if (mSize == 0) {
      mData = newItems;
      mSize = newSize;
      mMergedSize = newSize;
      mCallback.onInserted(0, newSize);
    } else {
      merge(newItems, newSize);
    }

    mOldData = null;

    if (forceBatchedUpdates) {
      endBatchedUpdates();
    }
  }