code: @Override
      public void onBindViewHolder(GalleryAdapter.ViewHolder holder, int position, List<Object> payloads) {
          if (payloads.isEmpty()) { // If doesn't have any payload then bind the fully item
              super.onBindViewHolder(holder, position, payloads);
          } else {
              for (Object payload : payloads) {
                  boolean selected = isSelected(position);
                  if (SELECTION_PAYLOAD.equals(payload)) {
                      if (VIEW_TYPE_MEDIA == getItemViewType(position)) {
                          MediaViewHolder viewHolder = (MediaViewHolder) holder;
                          viewHolder.mCheckView.setChecked(selected);
                          if (selected) {
                              AnimationHelper.scaleView(holder.mImageView, SELECTED_SCALE);
                          } else {
                              AnimationHelper.scaleView(holder.mImageView, UNSELECTED_SCALE);
                          }
                      }
                  }
              }
          }
      }
docs: Binding view holder with payloads is used to handle partial changes in item.