Material Design 下的 RecyclerView 怎么实现侧滑删除

阅读时长 11 分钟读完

在 Android 开发中,RecyclerView 是常用的列表控件。而 Material Design 是 Google 推出的设计语言,它的设计风格简洁大方,深受开发者喜爱。在 Material Design 中,侧滑删除是一种常见的交互模式。本文将介绍如何在 Material Design 下实现 RecyclerView 的侧滑删除功能。

侧滑删除的实现原理

侧滑删除的实现原理是通过在 RecyclerView 中添加一个 ItemTouchHelper.Callback 回调类,然后在该类中处理各种手势事件,实现侧滑删除的效果。

ItemTouchHelper.Callback 回调类中主要包含以下几个方法:

  • onMove():当用户拖动一个 ItemView 时被调用,可以用来实现拖动排序等功能。
  • onSwiped():当用户滑动一个 ItemView 时被调用,可以用来实现侧滑删除等功能。
  • getMovementFlags():用来设置支持的拖动和滑动的方向。
  • isLongPressDragEnabled():是否支持长按拖动。
  • isItemViewSwipeEnabled():是否支持滑动删除。

在本文中,我们只需要实现 onSwiped() 方法即可。

实现步骤

1. 添加依赖

在 build.gradle 文件中添加以下依赖:

2. 创建 RecyclerView

在布局文件中添加 RecyclerView 控件:

3. 创建适配器

创建 RecyclerView 的适配器,继承自 RecyclerView.Adapter<vh>,其中 VH 是 ViewHolder 的泛型。在 onCreateViewHolder() 方法中创建 ViewHolder,并将其与布局文件绑定:

-- -------------------- ---- -------
------ ----- --------- ------- ------------------------------------------ -

    ----- ---------- ------- ----------------------- -
        -------- ---------

        --------------- --------- -
            ----------------
            -------- - -------------------------------------
        -
    -

    --------
    ---------
    ------ ---------- --------------------------- --------- ------- --- --------- -
        ---- ---- - ---------------------------------------------------------------------- ------- -------
        ------ --- -----------------
    -

    ---------
    ------ ---- ------------------------- ---------- ------- --- --------- -
        ----------------------------- - - ----------
    -

    ---------
    ------ --- -------------- -
        ------ ---
    -
-

4. 创建 ItemTouchHelper.Callback 回调类

创建一个 ItemTouchHelper.Callback 类,继承自 ItemTouchHelper.Callback,实现 onSwiped() 方法:

-- -------------------- ---- -------
------ ----- ------------------------- ------- ------------------------ -

    ------- --------- ---------

    ------ ----------------------------------- -------- -
        -------- - --------
    -

    ---------
    ------ --- ------------------------- ------------ ------------- -------- ----------------------- ----------- -
        --- ---------- - --------------------- - --------------------
        ------ -------------------- ------------
    -

    ---------
    ------ ------- ------------------------ -
        ------ -----
    -

    ---------
    ------ ---- ----------------- ----------------------- ----------- --- ---------- -
        --- -------- - --------------------------------
        ------------------------------
    -
-

其中,getMovementFlags() 方法用来设置支持的滑动方向,这里设置为左右滑动。isItemViewSwipeEnabled() 方法用来开启滑动删除功能。onSwiped() 方法中,我们获取被滑动的 ItemView 的位置,然后通过适配器的 removeItem() 方法将其删除。

5. 绑定 ItemTouchHelper

在 Activity 或 Fragment 中,创建 RecyclerView 和适配器,并将其绑定。然后创建一个 ItemTouchHelper 实例,并将其与 RecyclerView 绑定:

至此,我们已经完成了 RecyclerView 的侧滑删除功能的实现。

示例代码

完整的示例代码如下:

activity_main.xml

item_layout.xml

MyAdapter.java

-- -------------------- ---- -------
------ ----- --------- ------- ------------------------------------------ -

    ----- ---------- ------- ----------------------- -
        -------- ---------

        --------------- --------- -
            ----------------
            -------- - -------------------------------------
        -
    -

    --------
    ---------
    ------ ---------- --------------------------- --------- ------- --- --------- -
        ---- ---- - ---------------------------------------------------------------------- ------- -------
        ------ --- -----------------
    -

    ---------
    ------ ---- ------------------------- ---------- ------- --- --------- -
        ----------------------------- - - ----------
    -

    ---------
    ------ --- -------------- -
        ------ ---
    -

    ------ ---- -------------- --------- -
        ----------------------------
    -
-

MyItemTouchHelperCallback.java

-- -------------------- ---- -------
------ ----- ------------------------- ------- ------------------------ -

    ------- --------- ---------

    ------ ----------------------------------- -------- -
        -------- - --------
    -

    ---------
    ------ --- ------------------------- ------------ ------------- -------- ----------------------- ----------- -
        --- ---------- - --------------------- - --------------------
        ------ -------------------- ------------
    -

    ---------
    ------ ------- ------------------------ -
        ------ -----
    -

    ---------
    ------ ---- ----------------- ----------------------- ----------- --- ---------- -
        --- -------- - --------------------------------
        ------------------------------
    -
-

MainActivity.java

-- -------------------- ---- -------
------ ----- ------------ ------- ----------------- -

    ---------
    --------- ---- --------------- ------------------- -
        -----------------------------------
        ---------------------------------------

        ------------ ------------ - --------------------------------
        --------- ------- - --- ------------
        ---------------------------------

        ------------------------- -------- - --- -----------------------------------
        --------------- --------------- - --- --------------------------
        ---------------------------------------------------
    -
-

总结

本文介绍了在 Material Design 下实现 RecyclerView 的侧滑删除功能的方法,通过添加 ItemTouchHelper.Callback 回调类,并实现其中的 onSwiped() 方法,即可实现侧滑删除。同时,本文也提供了完整的示例代码,希望能够对大家有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/655e3e6fd2f5e1655d883400

纠错
反馈