首页 > 解决方案 > Recycler View 元素上的不同滑动方向

问题描述

是否可以实现一个回收器视图,根据条件在不同方向上滑动的元素?我已经做了一些研究,但我没有发现任何关于这个问题的信息。

我目前正在使用 Recycler View,并且附加了 ItemTouchHelper.SimpleCallback。这样我就可以对回收站列表的所有元素执行滑动操作。

我的代码是这样的,我正在使用 getSwipeDirs() 函数来尝试实现我刚刚在问题开始时解释的内容,但它并不完全有效。

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

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            int position = viewHolder.getAdapterPosition();
            switch (direction) {
                case ItemTouchHelper.LEFT:
                    if(!Boolean.parseBoolean(activitiesList.get(position).get(7))) {
                        String doneActivityID = activitiesList.get(position).get(0);
                        DA.markActivityAsDone(doneActivityID, true, seeingDay);
                    }
                    break;
                case ItemTouchHelper.RIGHT:
                    if(Boolean.parseBoolean(activitiesList.get(position).get(7))) {
                        String doneActivityID = activitiesList.get(position).get(0);
                        DA.markActivityAsDone(doneActivityID, false, seeingDay);
                    }
                    break;
            }
        }

        @Override
        public int getSwipeDirs(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
            int position = viewHolder.getAdapterPosition();
            Calendar calendar = Calendar.getInstance();
            int today = calendar.get(Calendar.DAY_OF_WEEK) - 2;
            if (activitiesList.get(position).get(4).equals(getWeekDay(today))) {
                if (!Boolean.parseBoolean(activitiesList.get(position).get(7))) {
                    setDefaultSwipeDirs(ItemTouchHelper.LEFT);
                    return super.getSwipeDirs(recyclerView, viewHolder);
                }
                setDefaultSwipeDirs(ItemTouchHelper.RIGHT);
                return super.getSwipeDirs(recyclerView, viewHolder);
            }
            setDefaultSwipeDirs(0);
            return super.getSwipeDirs(recyclerView, viewHolder);
        }

如果有人能告诉我这是否可能,我将不胜感激,如果可以,请告诉我如何。

谢谢!

标签: androidandroid-recyclerviewswipeitemtouchhelper

解决方案


推荐阅读