title: how can drag item in RecyclerView work with paging library together?
body: <p>My app has a RecyclerView which support drag items to change their order.
  My app use ViewModel, Lifecycle, Room before adding paging library. And code to handle drag is easy.</p>
  
  <pre><code>override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
          val oPosition = viewHolder.adapterPosition
          val tPosition = target.adapterPosition
          Collections.swap(adapter?.data ,oPosition,tPosition)
          adapter?.notifyItemMoved(oPosition,tPosition)
          //save to db
          return true
      }
  </code></pre>
  
  <p>However, after I use paging library,</p>
  
  <pre><code>override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
          val oPosition = viewHolder.adapterPosition
          val tPosition = target.adapterPosition
          Collections.swap(adapter.currentList,oPosition,tPosition)
          adapter.notifyItemMoved(oPosition,tPosition)
          return true
      }
  </code></pre>
  
  <p>my app crashed because PagedListAdapter.currentList do not support set.</p>
  
  <pre><code>    java.lang.UnsupportedOperationException
      at java.util.AbstractList.set(AbstractList.java:132)
      at java.util.Collections.swap(Collections.java:539)
      at gmail.zebulon988.tasklist.ui.TaskListFragment$MyItemTouchCallback.onMove(TaskListFragment.kt:119).
  </code></pre>
  
  <p>Then I change the code</p>
  
  <pre><code>override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
          val oPosition = viewHolder.adapterPosition
          val tPosition = target.adapterPosition
          Log.d("TAG","onMove:o=$oPosition,t=$tPosition")
          val oTask = (viewHolder as VH).task
          val tTask = (target as VH).task
  
          if(oTask != null &amp;&amp; tTask != null){
              val tmp = oTask.order
              oTask.order = tTask.order
              tTask.order = tmp
              tasklistViewModel.insertTask(oTask,tTask)
  
          }
          return true
      }
  </code></pre>
  
  <p>This code change the task's order in db directly and the library update the display order by the db change. However, the animation is ugly.</p>
  
  <p>Is there a way to use <code>onMove</code> and <code>paging library</code> together genteelly？</p>