code: void postAdapterUpdate(UpdateOp op) {
          mPendingUpdates.add(op);
          if (mPendingUpdates.size() == 1) {
              if (mPostUpdatesOnAnimation && mHasFixedSize && mIsAttached) {
                  ViewCompat.postOnAnimation(this, mUpdateChildViewsRunnable);
              } else {
                  mAdapterUpdateDuringMeasure = true;
                  requestLayout();
              }
          }
      }
docs: Schedule an update of data from the adapter to occur on the next frame.
  On newer platform versions this happens via the postOnAnimation mechanism and RecyclerView
  attempts to avoid relayouts if possible.
  On older platform versions the RecyclerView requests a layout the same way ListView does.