title: ItemTouchHelper with Multi ViewType
body: <pre><code>public class ItemCallBack extends ItemTouchHelper.Callback {
  private BaseDragAdapter adapter;
  private List list;
  
  public ItemCallBack(BaseDragAdapter adapter, List list) {
      this.adapter = adapter;
      this.list = list;
  }
  
  @Override
  public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
      int dragFlags = 0; 
      int swipeFlags = 0;  
      int startPosition = viewHolder.getAdapterPosition();
      if (startPosition != 0) {
          if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
              dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
          } else if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
              dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
          } else if (recyclerView.getLayoutManager() instanceof StaggeredGridLayoutManager) {
              dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
          }
      }
      return makeMovementFlags(dragFlags, swipeFlags);
  }
  
  @Override
  public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 
      int startPosition = viewHolder.getAdapterPosition();
      int targetPosition = target.getAdapterPosition();
      adapter.onMoved(startPosition, targetPosition);
      return true;
  }
  
  @Override
  public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {  //左右拖动删除
      int position = viewHolder.getAdapterPosition();
      adapter.onSwiped(position);
  }
  
  @Override
  public boolean isLongPressDragEnabled() {
      return true;
  }
  
  @Override
  public boolean isItemViewSwipeEnabled() {
      return false;
  }
  
  
  @Override
  public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
      if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
          viewHolder.itemView.setScaleX(1.2f);
          viewHolder.itemView.setScaleY(1.2f);
      }
      super.onSelectedChanged(viewHolder, actionState);
  }
  
  @Override
  public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
      super.clearView(recyclerView, viewHolder);
      viewHolder.itemView.setScaleX(1.0f);
      viewHolder.itemView.setScaleY(1.0f);
      onOrderListener.order();
  }
  
  
  @Override
  public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
      super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
  }
  
  private OnOrderListener onOrderListener;
  
  public void setOnPictureClickListener(OnOrderListener onOrderListener) {
      if (onOrderListener != null) {
          this.onOrderListener = onOrderListener;
      }
  }
  
  public interface OnOrderListener {
      void order();
  }
  </code></pre>
  
  <p>}</p>
  
  <pre><code>@Override
  public int getItemViewType(int position) {
      if (position == 0) {
          return TYPE_ADD;
      } else if (position == 1) {
          return TYPE_COVER;
      }
      return TYPE_NORMAL;
  }
  
  @Override
  public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      if (viewType == TYPE_ADD) {
          View view = LayoutInflater.from(context).inflate(R.layout.item_upload_pic_add, null);
          return new AddHolder(view);
      } else if (viewType == TYPE_COVER) {
          View view = LayoutInflater.from(context).inflate(R.layout.item_upload_pic_cover, null);
          return new CoverHolder(view);
      }  else {
          View view = LayoutInflater.from(context).inflate(R.layout.item_upload_pic_normal, null);
          return new NormalHolder(view);
      }
  }
  </code></pre>
  
  <p>I wanna swap item with ItemTouchHelper.</p>
  
  <p>The issue is:</p>
  
  <blockquote>
    <p>When i drag and swap item that viewtype is TYPE_NORNAL,animation work well;<br>
    But When i try to switch between different types(ex:TYPE_NORMAL and TYPE_COVER),animation does not execute correctly.</p>
  </blockquote>
  
  <p>How to make the animation execute correctly?</p>