当前位置: 首页 > 编程笔记 >

Android 使用RecyclerView拖放

朱俭
2023-03-14
本文向大家介绍Android 使用RecyclerView拖放,包括了Android 使用RecyclerView拖放的使用技巧和注意事项,需要的朋友参考一下

示例

您可以使用RecyclerView来实现轻扫以关闭和拖放功能,而无需使用第三方库。
只需使用ItemTouchHelperRecyclerView支持库中包含的类。

ItemTouchHelper使用SimpleCallback回调实例化,并根据所支持的功能,应覆盖onMove(RecyclerView, ViewHolder, ViewHolder)和/或onSwiped(ViewHolder, int),最后附加到RecyclerView。

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

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
        // 从适配器中删除项目
    }

    @Override
    public boolean onMove(RecyclerView recyclerView,RecyclerView.ViewHolderviewHolder,RecyclerView.ViewHoldertarget) {
            final int fromPos = viewHolder.getAdapterPosition();
            final int toPos = target.getAdapterPosition();
            // 将适配器中的fromPos中的项目移动到toPos中。
            return true;// 如果移动则为true,否则为false
        }
    
};

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

值得一提的是,SimpleCallback构造函数将相同的滑动策略应用于中的所有项目RecyclerView。在任何情况下,都可以通过覆盖方法来更新特定项目的默认滑动方向getSwipeDirs(RecyclerView, ViewHolder)。

例如,假设我们RecyclerView包含a HeaderViewHolder,而我们显然不想对其应用刷卡。只需getSwipeDirs按如下所示进行覆盖即可:

@Override
public int getSwipeDirs(RecyclerView recyclerView,RecyclerView.ViewHolderviewHolder) {
    if (viewHolder instanceof HeaderViewHolder) {
        // 不滑动标题
        return 0;
    }
    // 默认滑动其他所有项目
    return super.getSwipeDirs(recyclerView, viewHolder);
}
           

 类似资料:
  • 本文向大家介绍Android RecyclerView使用方法解析,包括了Android RecyclerView使用方法解析的使用技巧和注意事项,需要的朋友参考一下 1.简介   RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。RecyclerView架构

  • 本文向大家介绍Android中RecyclerView拖拽、侧删功能的实现代码,包括了Android中RecyclerView拖拽、侧删功能的实现代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说,下面展示一下效果。 这是GridView主文件实现。 代码不难理解,就是activity里面设置一大堆初始化的东西。RecyclerView 初始化,setLayoutManager、addIte

  • 问题内容: 我正在使用TransferHandler将数据从JPanel作为JLabel传递到JTextArea (单击左侧面板中的某处以创建要拖动的JLabel) 数据的传输工作正常,但是我还想“显示” JLabel,因为 它与鼠标指针一起被拖动。 如果您注释掉 您将看到我想要它的外观。(但当然不会传输数据)。 如何既可以进行传输又可以使JLabel跟随鼠标光标? 这是代码: 问题答案: 另一个

  • 我正在创建一个使用RecyclerView显示的卡片列表,其中每个卡片都有一个按钮,可以从列表中删除该卡片。 是否有人有使用notifyItemRemoved()的经验,并且知道它的行为与NotifyDataSetChanged不同的原因? 下面是我正在使用的一些代码:

  • 我正在使用AppBarLayout和CollasingToolBarLayout的新CoordinatorLayout。在AppBarLayout下面,我有一个包含内容列表的RecyclerView。 我已经验证了当我在列表上下滚动时,fling scrolling可以在RecyclerView上工作。不过,我也希望AppBarLayout在扩展期间能够平滑滚动。 当向上滚动以展开CollaSpi

  • 本文向大家介绍Android 使用SearchView过滤RecyclerView中的项目,包括了Android 使用SearchView过滤RecyclerView中的项目的使用技巧和注意事项,需要的朋友参考一下 示例 添加filter方法RecyclerView.Adapter: itemsCopy在适配器的构造函数中初始化。itemsCopy.addAll(items) 如果您这样做,只需f