当前位置: 首页 > 知识库问答 >
问题:

RecyclerView下带有视图的滑动

麹鸿煊
2023-03-14

我已经做了一些研究,我还没有找到一个示例或实现,允许您在滑动时将一个视图(下面的示例图像)放在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 int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        return super.getSwipeDirs(recyclerView, viewHolder);
    }

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
        if (viewHolder instanceof ViewDividers) {
            Log.e("DIRECTION", direction + "");
        }
    }
};
new ItemTouchHelper(simpleItemTouchCallback).attachToRecyclerView(recycler);

共有1个答案

林曦之
2023-03-14

我对此的理解是,在xml中放置两个视图,在RecyclerView中每行显示这两个视图。

例如,这将是我的适配器:

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    public static class ExampleViewHolder extends RecyclerView.ViewHolder {
        public TextView background;
        public TextView foreground;

        public ExampleViewHolder(View v) {
            super(v);
            background = (TextView) v.findViewById(R.id.background);
            foreground = (TextView) v.findViewById(R.id.foreground);
        }

        @Override
        public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
            if (holder instanceof ExampleViewHolder) {
                ((ExampleViewHolder) holder).background.setBackgroundColor(); // do your manipulation of background and foreground here.
            }
        }

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                          int viewType) {

            View v = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.example, parent, false);
            return new ExampleViewHolder(v);
        }


    }
}

recyclerview中的每一行都从r.layout.example中提取xml布局。因此,要在下面创建视图,您可以使用relativelayout或framelayout在一个视图之上创建视图:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/background"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/foreground"/>
</RelativeLayout>
swipeTouchListener =
        new SwipeableRecyclerViewTouchListener(mRecyclerView,
                new SwipeableRecyclerViewTouchListener.SwipeListener() {
                    @Override
                    public boolean canSwipe(int position) {
                        if (position == totalPost.size() - 1 && !connected) {
                            return false;
                        }
                        return true;
                    }

                    @Override
                    public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] reverseSortedPositions) {
                        for (int position : reverseSortedPositions) {
                            //change some data if you swipe left
                        }
                        myAdapter.notifyDataSetChanged();
                    }

                    @Override
                    public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) {
                        for (int position : reverseSortedPositions) {
                            //change some data if you swipe right
                        }
                        myAdapter.notifyDataSetChanged();
                    }
                });
    mRecyclerView.addOnItemTouchListener(swipeTouchListener);
 类似资料:
  • 首先,我看到了这个问题:在使用Android的RecyclerView时,在滑动行下添加带有文本/图标的彩色背景 然而,即使标题说明“With text/icon”,答案也仅涵盖使用对象绘制矩形。 现在我已经实现了绘制绿色矩形;然而,我想让它更明显的是什么将发生的添加“完成”按钮,就像在下面的屏幕截图。 首先,它只画了一个绿色的小方块来包装我的“完成”图标(在下面的屏幕截图中看到的视图的红色部分来

  • 我看过一些样品,但没有一个适合我的需要。 我已经为动画创建了两个xml文件,但我不知道在更改的可见性时如何启动它们。

  • 我想创建一个应用程序,使用带有滑动视图的选项卡布局(类似于这样): 问题来了:我在网上到处找一个可以解释如何做这种事情的指南,但我所做的一切都对我不起作用。我在某个地方读到标签布局与Lollipop是不推荐的,所以我试图找到一个替代的方法来做我想做的事情,但什么也没有。我试图创建的每个选项卡布局应用程序在测试时都以崩溃告终,我认为这是由于的某些原因,总是因为选项卡在Lollipop中是不推荐的。我

  • 实现试衣间app首页中的上下滑动的特效,可以上拉视图查看下一张图片,也可以下拉将看过的图片再拉下来显示。视图变换时显示透明的效果。 [Code4App.com]

  • 问题内容: 我的问题几乎与此类似: 从矩阵平滑表面图 只是我的工具集是matplotlib和numpy(到目前为止)。 我已经成功生成了X,Y和Z网格以进行绘制 但是,由于这些值非常跳跃,因此看起来非常糟糕。 我想使事情变得平滑,至少使顶点连接或看起来像那样。 我的数据是这样生成的:我有一个函数 它根据x生成矩阵,计算其y次幂,选择列和行的子集,并计算最大奇异值。因此,Z [x,y]是svOfMa

  • 是否有一种方法可以在完成刷取并对实例调用之后恢复刷取操作并将视图保持器还原到其初始位置?我使用了、和实例来完美地协同工作,在某些情况下,我只需要恢复swipe操作,而不删除被刷过的项。