java - 为 RecyclerView 中的某些行禁用 ItemTouchHelper Swipe

标签 java android android-recyclerview

我只是使用以下方法在我的数据列表上进行左右滑动。它工作正常。我想知道如何禁用数据列表中某些行的滑动操作。 例如:有些数据用户不应该删除。我想限制这些行。

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {


        @Override
        public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {

            //Remove swiped item from the list and notify the RecyclerView

        }
        @Override
        public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {

        }
    };

最佳答案

使用getMovementFlags()您的 ItemTouchHelper.SimpleCallback。您需要通过不返回滑动标志来检测要禁止滑动的 View 持有者。

Here是网格布局不允许滑动的示例。

  @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        // Set movement flags based on the layout manager
        if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
            final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
            final int swipeFlags = 0;
            return makeMovementFlags(dragFlags, swipeFlags);
        } else {
            final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
            final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
            return makeMovementFlags(dragFlags, swipeFlags);
        }
}

关于java - 为 RecyclerView 中的某些行禁用 ItemTouchHelper Swipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002838/

相关文章:

Java,Spring 测试,如何配置通常在 web.xml 中定义的日志记录?

android - 使用 robotium 测试 Activity 流程

android - 启动相机拍照或录制视频

java - 我在将 SearchView 与 RecyclerView 一起应用时遇到问题

android - 选择回收者 View 的特定行以共享 Intent

java - 运行 JavaScript 方法并返回参数

java - 不确定我是否正确使用链表进行了递归

Android 自定义弹出窗口/对话框

java - 如何在 RecyclerView 中使用 CountDownTimer?

java - 使用 java 和 Tika 的正则表达式将字符串拆分为数组