title: recycler view does not scroll fluently
body: <p>I have a fragment in my Activity with the below structure:</p>
  
  <pre><code>&lt;android.support.v7.widget.RecyclerView android:id="@+id/cafeRecyclerView"
                                      xmlns:android="http://schemas.android.com/apk/res/android"
                                      android:layout_width="match_parent"
                                      android:layout_height="match_parent"/&gt;
  </code></pre>
  
  <p>it has only a RecyclerView. and it has an Adapter with the below code:</p>
  
  <pre><code>public class InfinityFragmentRecyclerAdapter extends RecyclerView.Adapter       implements HasDatabase
  {
  protected JsonDatabase jsonDatabase = new JsonDatabase();
  protected Context mContext;
  protected int arrangeMode;
  
  public InfinityFragmentRecyclerAdapter(Context context, int viewMode)
  {
      mContext = context;
      arrangeMode = viewMode;
  }
  
  @Override
  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
  {
      View view;
      if (arrangeMode == SupportsGridAndListArrangement.GRID_VIEW)
      {
          view = LayoutInflater.from(viewGroup.getContext()).inflate
                  (R.layout.grid_advertisement_layout, null);
      }
      else
      {
          view = LayoutInflater.from(viewGroup.getContext()).inflate
                  (R.layout.list_advertisement_layout, null);
      }
      return new ItemHolder(view, mContext, arrangeMode);
  }
  
  @Override
  public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i)
  {
      AdItemPassiveDataSet adItemPassiveDataSet = (AdItemPassiveDataSet) jsonDatabase.getDataSetAt(i);
  
      Picasso.with(mContext).load(adItemPassiveDataSet.getItemThumbnailAddress()).into
              (((ItemHolder) viewHolder).imageView);
      ((ItemHolder) viewHolder).adID = adItemPassiveDataSet.getItemID();
      ((ItemHolder) viewHolder).userID = adItemPassiveDataSet.getUserID();
      ((ItemHolder) viewHolder).userRole = adItemPassiveDataSet.getUserRole();
      ((ItemHolder) viewHolder).price.setText(adItemPassiveDataSet.getItemPrice(), false);
      ((ItemHolder) viewHolder).title.setText(adItemPassiveDataSet.getItemTitle(), false);
      ((ItemHolder) viewHolder).state.setText(adItemPassiveDataSet.getItemState(), false);
      ((ItemHolder) viewHolder).date.setText(adItemPassiveDataSet.getItemTime(), false);
  
      if (arrangeMode == SupportsGridAndListArrangement.LIST_VIEW)
      {
          ((ItemHolder) viewHolder).description.setText(adItemPassiveDataSet.getItemDescription());
  
          StaggeredGridLayoutManager.LayoutParams layoutParams =
                  new StaggeredGridLayoutManager.LayoutParams
                          (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
          layoutParams.setFullSpan(true);
          viewHolder.itemView.setLayoutParams(layoutParams);
      }
  }
  
  @Override
  public int getItemCount()
  {
      if (jsonDatabase != null)
      {
          return jsonDatabase.getCount();
      }
      else
      {
          return 0;
      }
  }
  
  @Override
  public JsonDatabase getDatabase()
  {
      return jsonDatabase;
  }
  
  public void append(Object newJsonDatabase)
  {
      int currentCount = 0;
      if (jsonDatabase != null)
      {
          currentCount = jsonDatabase.getCount();
      }
      int newCount = ((JsonDatabase) newJsonDatabase).getCount();
      jsonDatabase.appendAtEnd((JsonDatabase) newJsonDatabase);
      for (int i = currentCount; i &lt; (currentCount + newCount); i++)
      {
          notifyItemInserted(i);
      }
  }
  }
  </code></pre>
  
  <p>I also setup my fragment at this way:</p>
  
  <pre><code>        recyclerView = (RecyclerView) findViewById(R.id.cafeRecyclerView);
      recyclerViewAdapter = new InfinityFragmentRecyclerAdapter(this, SupportsGridAndListArrangement.GRID_VIEW);
      StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);
      recyclerView.setLayoutManager(staggeredGridLayoutManager);
      recyclerView.setAdapter(recyclerViewAdapter);
  </code></pre>
  
  <p>and each time I receive new data from server, I add them to RecyclerView in <code>CardView</code>s at this way:</p>
  
  <pre><code>recyclerViewAdapter.append(newJsonDatabase);
  </code></pre>
  
  <p>every thing is fine! I can download data, add them to recycler view and so on but the problem is that the recycler view doesnt scroll fluently. when the top or bottom of my cardviews in recycler view reach to the top of recycler view, it somehow sticks and jumps some pixels! I'm really confused. any idea please? any help will be appreciated.</p>