Android - 滑动删除 RecyclerView

标签 android android-recyclerview

我正在尝试实现滑动删除与 Gmail 应用程序“滑动到存档”相同:

gmail swipe delete gmail swipe delete

我尝试了很多教程,但没有一个像 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,但在滑动时它会将整个项目与背景一起抛出。

最佳答案

RecyclerView Swipe 的简单代码:

     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();

            }
     };

然后使用以下语句为 recyclerView 设置回调:

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

关于Android - 滑动删除 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33985719/

相关文章:

android - 为什么 RecyclerView Items 出现在错误的位置?

android drawable to bitmap引起的OOM

Android imeOptions 和自动按下登录按钮

Android JPEG 到位图 = 尺寸减小

java - Android导航组件不断重新加载WebView

android - LinearLayout 与 ScrollView 中的 Layout_weight

Android 更改回收器 View 列号。捏缩放

android - 添加 selectableItemBackground 和着色背景

android - RecyclerView设置PagerSnapHelper和GridLayoutManager有spanCount多2

android - 如何在没有搜索 View 的情况下单击一组按钮后过滤回收 View