最近项目需求要求对一个三层级的树状列表做拖动,经过一周时间的开发终于是搞出来了。
做出来的效果
Android三级列表拖动
一、首先讲一下树状列表是如何实现的
1.整个树状列表使用的是RecyclerView
2.层级间的UI是用Item中左侧一个透明的View宽度大小来实现层级效果
3.和后端要求,让其返回我们协商一致的数据结构
二、拖动的实现用的是 ItemTouchHelper.Callback
1.定义一个接口,里面有四个需要实现的方法
1.1 拖动开始,获取初始拖动的position onItemStart(int postion)
1.2 拖动中做位置交换,获取拖动交换前和交换后的position onItemMove(int formPosition int toPosition)
1.3 手指完成拖动或取消拖动事件 onItemEnd( )
1.4 拖动中,拖动条目和上下条目的位置关系,区分拖到条目的里面还是两个条目中间 onUpAndDown(int type)
2.将这个接口的实例和Recyclerview 关联好 new ItemTouchHelper(onCallback).attachToRecyclerView(recyViewId);
3.我们通过拿到这些实现方法中的数据来做相应的操作,具体情况根据想做的效果来实现