美文网首页app开发Android 知识
实现可拖拽的RecycleView

实现可拖拽的RecycleView

作者: 游学者崔斯特 | 来源:发表于2016-03-03 13:32 被阅读797次


    效果图

    其实实现这种效果有两种方法:

    1.View.startDrag(), 然后给需要监听拖拽的控件setOnDragListener.

    2.ItemTouchHelper,这种实现方法更为简单,具体可参考链接描述

    这里我是用的第一种方法,因为感觉第二种方法已经烂大街了。。况且第二种方法只能在RecycleView内部移动。跟其他控件结合的话就爆炸。

    具体实现步骤

    给RecycleView.ViewHolder实现OnClickListener()方法,长按的时候开始拖动。

    拖动的时候给不同的DragEvent做不同的操作。分别有DragEvent.ACTION_DRAG_STARTED(拖动开始时)

    DragEvent.ACTION_DRAG_ENTERED(拖动的View进入监听的View时),DragEvent.ACTION_DRAG_LOCATION(拖动的View在监听的View中改变位置时),DragEvent.ACTION_DRAG_EXITED(拖动的View离开在监听的View中时),DragEvent.ACTION_DROP(拖动放下时),DragEvent.ACTION_DRAG_ENDED(拖动结束时)

    实现RecleView在拖动中排序

    这几步中,最重要的还是第二步:

    @OverridepublicbooleanonDrag(View v, DragEventevent){

    switch(event.getAction()) {

    caseDragEvent.ACTION_DRAG_STARTED:

    //开始时,让拖动的Item变白

    break;

    caseDragEvent.ACTION_DRAG_ENTERED:

    //进入时,这个Demo不需要用到

    break;

    caseDragEvent.ACTION_DRAG_LOCATION:

    //处理RecycleView的滑动

    //处理Item之间的交换

    break;

    caseDragEvent.ACTION_DRAG_EXITED:

    caseDragEvent.ACTION_DRAG_ENDED:

    //善后工作

    break;        }

    //一定要return true

    return  true;    

    }

    demo代码

    相关文章

      网友评论

      • 小口锅:recycleView 高没有全屏的情况。直接奔溃了
      • 57e9cac1a28b:大佬 问个问题 我现在在做一个类似电脑拖拽文件到文件夹的效果 能不能给点建议

      本文标题:实现可拖拽的RecycleView

      本文链接:https://www.haomeiwen.com/subject/hjznkttx.html