当前位置:首页 > 编程技术 > 正文内容

Android 开发:实现 RecyclerView 的滑动删除功能

准备工作

Android 开发:实现 RecyclerView 的滑动删除功能

在开始之前,请确保你的项目已经包含以下依赖:

  • RecyclerView

  • ItemTouchHelper

如果你正在使用Android Studio,并且你的项目基于Gradle构建,可以在你的build.gradle文件中添加如下依赖:

dependencies {    implementation 'androidx.recyclerview:recyclerview:1.2.1' }

创建布局文件

首先,我们需要创建一个简单的布局文件用于RecyclerView的每一项。这里我们仅使用一个TextView作为示例。

item_layout.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/textView"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:padding="16dp"    android:textSize="18sp" />

适配器与ViewHolder

接下来,定义RecyclerView.AdapterViewHolder。这将帮助我们管理列表的数据集。

MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {    private List<String> mDataset;    private Context context;    public static class MyViewHolder extends RecyclerView.ViewHolder {        public TextView textView;        public MyViewHolder(View v) {            super(v);            textView = v.findViewById(R.id.textView);        }    }    public MyAdapter(Context context, List<String> myDataset) {        this.context = context;        mDataset = myDataset;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View v = LayoutInflater.from(parent.getContext())                .inflate(R.layout.item_layout, parent, false);        return new MyViewHolder(v);    }    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        holder.textView.setText(mDataset.get(position));    }    @Override    public int getItemCount() {        return mDataset.size();    } }

添加滑动删除功能

为了给我们的RecyclerView添加滑动删除功能,我们将使用ItemTouchHelper。这个辅助类可以让你很容易地为RecyclerView添加拖拽和滑动行为。

MainActivity.java

import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; ... // 在onCreate方法内或适当位置初始化 RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 初始化适配器 List<String> data = Arrays.asList("Item 1", "Item 2", "Item 3"); MyAdapter adapter = new MyAdapter(this, data); recyclerView.setAdapter(adapter); // 创建ItemTouchHelper.Callback ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {    @Override    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {        // 我们不需要处理移动,所以返回false        return false;    }    @Override    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {        // 删除被滑动的项        int position = viewHolder.getAdapterPosition();        adapter.mDataset.remove(position);        adapter.notifyItemRemoved(position);    } }; // 将回调附加到ItemTouchHelper并关联到RecyclerView new ItemTouchHelper(simpleCallback).attachToRecyclerView(recyclerView);

这样我们就完成了基本的滑动删除功能的实现。你可以运行应用程序,并尝试滑动列表项来查看效果。记得根据你的实际需求调整代码,比如添加撤销删除的操作等。

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/11614.html

分享给朋友:

“Android 开发:实现 RecyclerView 的滑动删除功能” 的相关文章

【说站】laravel实现自定义404页面并给页面传值

【说站】laravel实现自定义404页面并给页面传值

以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...