实现fab随RecyclerView滑动隐藏显示,增加添加联系人页面,实现联系人拖动

This commit is contained in:
2025-10-22 00:21:20 +08:00
parent 68b2e0754c
commit 80f7e47511
25 changed files with 982 additions and 25 deletions

View File

@@ -0,0 +1,54 @@
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.getAdapterPosition(), target.getAdapterPosition());
return true;
}
// 处理滑动删除
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// 通知适配器项已删除
mAdapter.onItemDismiss(viewHolder.getAdapterPosition());
}
// 当长按item时启用拖动
@Override
public boolean isLongPressDragEnabled() {
return true;
}
// 启用滑动删除
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
}