Android“从左向右滑动删除”,在列表项上的手势,ICS样式

我正在尝试执行Android ICS及更高版本中针对通知的“从左向右滑动删除”手势。 我在我的应用程序中有一个列表视图。 我有手势检测器工作。 但是当我从左到右在特定列表项上滑动时,我希望项目随着手指一起移动。当我移动手指时,超过了某个点,只有该项目应该删除自己。OnFling()方法I目前还没有达到这个目标。

我怎样才能修改OnFling()方法,使物品与我的手指一起移动?

我的手势监听器类是

class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_MIN_DISTANCE = 50; private static final int SWIPE_MAX_OFF_PATH = 100; private static final int SWIPE_THRESHOLD_VELOCITY = 25; private MotionEvent mLastOnDownEvent = null; @Override public boolean onDown(MotionEvent e) { mLastOnDownEvent = e; return super.onDown(e); } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "On Single TAP up ", Toast.LENGTH_SHORT).show(); return super.onSingleTapUp(e); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1 == null) { e1 = mLastOnDownEvent; } if (e1 == null || e2 == null) { return false; } float dX = e2.getX() - e1.getX(); float dY = e1.getY() - e2.getY(); if (Math.abs(dY) < SWIPE_MAX_OFF_PATH && Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY && Math.abs(dX) >= SWIPE_MIN_DISTANCE) { if (dX > 0) { int position = tasks.pointToPosition((int) e1.getX(), (int) e1.getY()); int _id = (int) tasks.getItemIdAtPosition(position); databaseConnector.deleteContact(_id); new DeleteRow(_id, contactAdapter, getApplicationContext()); contactAdapter.notifyDataSetChanged(); Toast.makeText(getApplicationContext(), "Right Swipe" + _id, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show(); } return true; } return false; } 

  • 禁用ScrollView中包含的ListView的滚动
  • 根据列表视图的内容对listview中的相似行进行分组
  • Android:删除数据库行后如何重新查询游标刷新ListView?
  • 无法用自定义适配器单击ListView中的项目
  • 具有滚动速度控制的无限自动滚动列表视图
  • Listview itemclick无效
  • 将RecyclerView中的CardView展开为Google Activity中的“收件箱”之类的新活动
  • listview与arraylist,在android中简单的适配器
  • 如果你想实现这种types的function,你应该看看Roman Nurik的刷卡去掉github上的代码片段。 你可以在这里find它。

    如果你能够使用更新的支持库, RecyclerView有一些内置的ItemTouchHelperonSwiped方法可以给你想要的行为。

    该支持从RecyclerView支持库的v22.2.0开始,根据这个非常有用的答案: https ://stackoverflow.com/a/30601554/1518546