Files
ElderlyDialer/app/src/main/java/com/ttstd/dialer/view/ItemTouchHelperCallback.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;
}
}