55 lines
1.6 KiB
Java
55 lines
1.6 KiB
Java
package com.ttstd.dialer.view;
|
|
|
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
import com.ttstd.dialer.adapter.ContactInfoAdapter;
|
|
|
|
|
|
// 处理拖动和滑动事件
|
|
public class ItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
|
private final ContactInfoAdapter mAdapter;
|
|
|
|
public ItemTouchHelperCallback(ContactInfoAdapter adapter) {
|
|
mAdapter = adapter;
|
|
}
|
|
|
|
// 定义支持的拖动方向
|
|
@Override
|
|
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
|
// 允许上下拖动
|
|
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN ;
|
|
// 允许左右滑动删除
|
|
int swipeFlags = ItemTouchHelper.START;
|
|
return makeMovementFlags(dragFlags, swipeFlags);
|
|
}
|
|
|
|
// 处理拖动交换位置
|
|
@Override
|
|
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
|
|
RecyclerView.ViewHolder target) {
|
|
// 通知适配器项已移动
|
|
mAdapter.onItemMove(viewHolder.getBindingAdapterPosition(), target.getBindingAdapterPosition());
|
|
return true;
|
|
}
|
|
|
|
// 处理滑动删除
|
|
@Override
|
|
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
|
|
// 通知适配器项已删除
|
|
mAdapter.onItemDismiss(viewHolder.getBindingAdapterPosition());
|
|
}
|
|
|
|
// 当长按item时启用拖动
|
|
@Override
|
|
public boolean isLongPressDragEnabled() {
|
|
return true;
|
|
}
|
|
|
|
// 启用滑动删除
|
|
@Override
|
|
public boolean isItemViewSwipeEnabled() {
|
|
return false;
|
|
}
|
|
}
|