title: DiffUtil.calculateDiff In RecyclerView
body: <p>I have this code below which uses the DiffUtil.calculateDiff between two lists. Each time i scroll further down the list, new data comes and added to the list. But when the result notifies changes, the adapter leads me to the top of the list each time. </p>
  
  <ol>
  <li>How can i  remain to the position which the new data was added?</li>
  <li><p>This example is the right usage of DiffUtil.calculateDiff?or  simply do i need to use :</p>
  
  <pre><code>companyList.addAll(companies);
  notifyDataSetChanged();
  </code></pre></li>
  </ol>
  
  <p>without the DiffUtil.calculateDiff.</p>
  
  <pre><code>public void setProductList(final List&lt;? extends Product&gt; productList) {
      if (mProductList == null) {
          mProductList = productList;
          notifyItemRangeInserted(0, productList.size());
      } else {
          DiffUtil.DiffResult result = DiffUtil.calculateDiff(new DiffUtil.Callback() {
              @Override
              public int getOldListSize() {
                  return mProductList.size();
              }
  
              @Override
              public int getNewListSize() {
                  return productList.size();
              }
  
              @Override
              public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
                  return mProductList.get(oldItemPosition).getId() ==
                          productList.get(newItemPosition).getId();
              }
  
              @Override
              public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
                  Product newProduct = productList.get(newItemPosition);
                  Product oldProduct = mProductList.get(oldItemPosition);
                  return newProduct.getId() == oldProduct.getId()
                          &amp;&amp; Objects.equals(newProduct.getDescription(), oldProduct.getDescription())
                          &amp;&amp; Objects.equals(newProduct.getName(), oldProduct.getName())
                          &amp;&amp; newProduct.getPrice() == oldProduct.getPrice();
              }
          });
          mProductList.addAll(productList);
          result.dispatchUpdatesTo(this);
      }
  }
  </code></pre>