Android – 刷卡删除RecyclerView

我正在尝试实施轻扫以删除Gmail应用程序中的“扫描到存档”:

gmail刷卡删除 gmail刷卡删除

我已经尝试了很多教程,但没有一个像Gmail一样快,我更喜欢在外部库上工作。 我该怎么做?

编辑:

我的代码到目前为止 –

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { // final int fromPos = viewHolder.getAdapterPosition(); // final int toPos = viewHolder.getAdapterPosition(); // // move item in `fromPos` to `toPos` in adapter. return true;// true if moved, false otherwise } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { //Remove swiped item from list and notify the RecyclerView mAdapter.notifyItemRemoved(viewHolder.getLayoutPosition()); } }; ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); itemTouchHelper.attachToRecyclerView(mRecyclerView); 

我已经设法启用滑动手势,但我不知道如何添加一个背景和在viewHolder下的图像 。 我试图在item_XXX.xml文件中放置另一个FrameLayout,但是在滑动时会抛出具有背景的整个项目。

我不得不这样做,有一天我有一些问题,所以我决定写一个博客文章。 没有必要的第三方库。

博客文章 git回购

基本上,你不会通过onChildDraw绘制“撤消状态”,它将通过ViewHolder完成。 你也不会真的删除onSwipe行,只需将其标记为“挂起的删除”,并通知适配器在“撤消状态”中重新绑定它。 同时你发布一个Runnable实际上是在x秒内删除行,除非按下撤销button…

简单代码RecyclerView刷卡:

  ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT | ItemTouchHelper.DOWN | ItemTouchHelper.UP) { @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { Toast.makeText(ListActivity.this, "on Move", Toast.LENGTH_SHORT).show(); return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { Toast.makeText(ListActivity.this, "on Swiped ", Toast.LENGTH_SHORT).show(); //Remove swiped item from list and notify the RecyclerView int position = viewHolder.getAdapterPosition(); arrayList.remove(position); adapter.notifyDataSetChanged(); } }; 

然后使用以下语句为回收站查看callback:

 ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); itemTouchHelper.attachToRecyclerView(rv);