title: RecyclerView StaggeredGridLayoutManager reordering issue
body: <p>I'm trying to display three (at least that's the case I have an issue with) items in a <code>RecyclerView</code> with a <code>StaggeredGridLayoutManager</code> with two columns. The first item is spanned across the two rows. Here's how it looks like:</p>
  
  <p><img src="https://i.stack.imgur.com/tAAk7.png" alt="Correct initial behaviour"></p>
  
  <p>Now, I'm moving the item "Item 2" to top. Here's the code I call, in the adapter (it's a sample I wrote to demonstrate the issue I have in a more complex project):</p>
  
  <pre><code>private int findById(int id) {
      for (int i = 0; i &lt; items.size(); ++i) {
          if (items.get(i).title.equals("Item " + id)) {
              return i;
          }
      }
  
      return -1;
  }
  
  // Moving the item "Item 2" with id = 2 and position = 0
  public void moveItem(int id, int position) {
      final int idx = findById(id);
      final Item item = items.get(idx);
  
      if (position != idx) {
          items.remove(idx);
          items.add(position, item);
          notifyItemMoved(idx, position);
          //notifyDataSetChanged();
      }
  }</code></pre>
  
  <p>After that, the array is fine: <code>[Item 2, Item 1, Item 3]</code>. However, the view is far from fine:</p>
  
  <p><img src="https://i.stack.imgur.com/9OnPw.png" alt="Layout issue"></p>
  
  <p>If I touch the <code>RecyclerView</code> (enough to trigger the overscroll effect if there's not enough items to scroll), Item 2 move to the left, where I expected to see it in the first place (with a nice animation):</p>
  
  <p><img src="https://i.stack.imgur.com/lhUDj.png" alt="Expected result"></p>
  
  <p>As you maybe saw in the code, I tried to replace <code>notifyItemMoved(idx, position)</code> by a call to <code>notifyDataSetChanged()</code>. It works, but the change is not animated.</p>
  
  <p>I wrote a complete sample to demonstrate this and put it on <a href="https://github.com/Kernald/android-recyclerview-staggeredgridlayoutmanager-issue" rel="noreferrer">GitHub</a>. It's nearly minimal (there are options to move the item and toggle their spanning).</p>
  
  <p>I don't see what I can be doing wrong. Is this a bug with <code>StaggeredGridLayoutManager</code>? I would like to avoid <code>notifyDataSetChanged()</code> as I would like to keep consistency regarding the animations.</p>
  
  <hr>
  
  <p>Edit: after some digging, there's no need for a fully-spanned item to show the issue. I removed the full-span. When I try to move Item 2 to position 0, it <em>doesn't move</em>: Item 1 goes after it, and Item 3 is moved on the right, so I have: empty cell, Item 2, new line, Item 1, Item 3. I still have the correct layout after a scroll.</p>
  
  <p>What's more interesting is that I don't have the issue with a <code>GridLayoutManager</code>. I need a full-span item so it's not a solution, but I guess it's indeed a bug in the <code>StaggeredGridLayoutManager</code>…</p>