当产生侧滑效果了,会回调此方法。
我们在这个方法里面从数据源里面移除相应的数据,然後调用notifyXXX方法就行了。
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.getAdapterPosition()
//放在Adapter的函式removeItem()
this_adapter.removeItem(position)
}
fun removeItem(position: Int){
innerList.removeAt(position)
notifyDataSetChanged()
}
当产生拖动效果了,会回调此方法。
我们通常会更新数据源,就比如说,一个ItemView从0拖到了1位置,那麽对应的数据源也需要更改位置
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
val fromPos = viewHolder.getAdapterPosition()
val toPos = target.getAdapterPosition()
// move item in `fromPos` to `toPos` in adapter.
//放在Adapter的函式moveItem()
this_adapter.moveItem(fromPos,toPos)
return true // true if moved, false otherwise
}
如果只有画面上做变动,当资料重新bind 时 还是会依据这个位子的资料 去 bind 画面, 回复原来的样子
fun moveItem(fromPos:Int,toPos:Int){
// 资料做变动
val origin = innerList[fromPos]
innerList.removeAt(fromPos)
innerList.add(toPos,origin)
// 画面上做变动
notifyItemMoved(fromPos, toPos)
}
我们需要复写getMovementFlags()去指定允许滑动的方向,使用 makeMovementFlags(int,int)建立returned flags。
如下:
override fun getMovementFlags(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder): Int {
// 这里drag支持上下方向,swipe支持左右方向。
val dragFlags = ItemTouchHelper.UP or ItemTouchHelper.DOWN
val swipeFlags = ItemTouchHelper.START or ItemTouchHelper.END
return makeMovementFlags(dragFlags,swipeFlags)}
是否可以左右侧滑,默认返回true
override fun isItemViewSwipeEnabled(): Boolean {
return true
}
是否可以长按上下拖拽,默认返回false
override fun isLongPressDragEnabled(): Boolean {
return true
}
itemTouchHelper.attachToRecyclerView(recyclerview)
>>: [Day 27] 从零开始学Python - 科学绘图Matplotlib:画着你,画不出你的骨骼
本系列文之後也会置於个人网站 现在,让我们再一次把视线放到「身份验证」和「存取控制」这些名词身上。...
上一篇把"Hello World!"更改成了了 但字体太小了,看不清楚到底打对还...
延续昨日 今天来讲讲我们要做的新功能 叫做功能测试 这个功能的目的是 我们公司的大佬希望能够把 测试...
前情提要 前一篇带各位实际使用了汇率爬虫并搭配 openpyxl 这个套件做到执行程序便可读取在 e...
前言 许多程序语言在主程序写好後,还需要对程序进行测试,这时就需要写测试的档案。在 Go 语言中,测...