android - 如何知道 recyclerview 单元格被刷卡的方向?
问题描述
在我的 recyclerview 中,我附加了 ItemTouchHelper。用户可以双向滑动,即左右滑动。
我想知道是否有可能在用户开始向左或向右拖动单元格时而不是在用户刷过 recyclerview 的单元格后才知道。基于此,我需要对单元格采取一些措施。
我正在通过 ItemTouchHelper 的以下方法
@Override
public int getDragDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
return super.getDragDirs(recyclerView, viewHolder);
}
但我不知道如何使用它,因为文档不正确。
解决方案
一旦选择了正在滑动的视图并开始向右或向左移动,onChildDraw()
您就可以检查向内滑动的方向:ItemTouchHelper.Callback
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
// Here, if dX > 0 then swiping right.
// If dX < 0 then swiping left.
// If dX == 0 then at at start position.
} else {
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
}
推荐阅读
- docker - 两个网络之间的通信 - Docker Swarm
- wordpress - www 和非 www 域的单独服务器
- python - Python 数据类:如果 __post_init__ 执行类型转换,使用什么类型?
- android - Flutter:如何从另一个类调用实例的方法
- php - 时间操纵:如何在php中合并块时间和开放时间?
- android - MQTT 未解析参考 Android Studio
- php - 数组中的多个替换字符
- cypress - 使用 cypress 验证加载指示器显示
- amazon-ec2 - 在动态收集的 EC2 实例上运行任务
- git - 如何在 Gitlab 上添加维护者作为项目的所有者