recycleview的动态添加与删除

2024-04-25 06:32
文章标签 动态 删除 recycleview

本文主要是介绍recycleview的动态添加与删除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在学习完简单的recycleview后,我发现它还可以添加删除,特意在自己的工程中进行了实现

首先,recycleview控件存在与v7包中,我们在写代码前要导入依赖包:

compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'

再看一下它的重要代码:

del = (Button) findViewById(R.id.delitem);
add = (Button) findViewById(R.id.additem);
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
//列表布局, 第一个参数表示上下文环境, 第二个参数表示水平布局,第三个参数表示是否反转;后两个参数可省略
//mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false));

//表格布局,第一个参数表示上下文,第二个参数表示表格有多少列
//mRecyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this, 3));

//瀑布布局,
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL));
isflow = true;//添加分割线;列表布局设置DividerItemDecoration.HORIZONTAL;表格布局时设置DividerItemDecoration.VERTICAL//mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
//添加适配器
mRecyclerView.setAdapter(mAdapter = new HomeAdapter());
之后,我们就要开始动态添加删除了
这用到了recycleview 的监听时间和一个接口的回调
/**
 * 创建一个回调接口
 */
public interface MyItemClickListener {void onItemClick(View view, int position);
}
之后就是适配器的俄不同了
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {MyItemClickListener mItemClickListener;@Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_home, parent, false);//将全局的监听传递给holder
        MyViewHolder holder = new MyViewHolder(view, mItemClickListener);return holder;}@Override
    public void onBindViewHolder(MyViewHolder holder, int position) {//控件赋值
        holder.tv.setText(mDatas.get(position));}@Override
    public int getItemCount() {return mDatas.size();}// 删除数据
    public void removeData(int position) {mDatas.remove(position);//删除动画
        notifyItemRemoved(position);notifyDataSetChanged();}// 添加数据
    public void addData(int position) {//   list中添加数据,并通知条目加入一条
        mDatas.add(position, "我是商品" + position);//添加动画
        notifyItemInserted(position);}

class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {private MyItemClickListener mListener;TextView tv;public MyViewHolder(View view, MyItemClickListener myItemClickListener) {super(view);tv = (TextView) view.findViewById(R.id.id_num);
这是对瀑布流时随机高度的一个生成,为了判断是否为瀑布流特地设置了布尔值isflow;
if (isflow) {ViewGroup.LayoutParams lp = tv.getLayoutParams();lp.height = (int) (Math.random() * 300 + 100);tv.setLayoutParams(lp);isflow = false;}//将全局的监听赋值给接口
            this.mListener = myItemClickListener;itemView.setOnClickListener(this);}@Override
        public void onClick(View view) {if (mListener != null) {mListener.onItemClick(view, getPosition());}}}public void setItemClickListener(MyItemClickListener myItemClickListener) {this.mItemClickListener = myItemClickListener;}
}
当然除了接口回调,下面这俩个方法也很重要
    // 删除数据
    public void removeData(int position) {mDatas.remove(position);//删除动画
        notifyItemRemoved(position);notifyDataSetChanged();}// 添加数据
    public void addData(int position) {//   list中添加数据,并通知条目加入一条
        mDatas.add(position, "我是商品" + position);//添加动画
        notifyItemInserted(position);}

效果如下图



这篇关于recycleview的动态添加与删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933923

相关文章

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

C#实现插入与删除Word文档目录的完整指南

《C#实现插入与删除Word文档目录的完整指南》在日常的办公自动化或文档处理场景中,Word文档的目录扮演着至关重要的角色,本文将深入探讨如何利用强大的第三方库Spire.Docfor.NET,在C#... 目录Spire.Doc for .NET 库:Word 文档处理利器自动化生成:C# 插入 Word

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

使用Python实现在PDF中添加、导入、复制、移动与删除页面

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc... 目录1. 向 PDF 添加空白页2. 从另一个 PDF 导入页面3. 删除 PDF 中的页面4. 在

Java轻松实现在Excel中插入、提取或删除文本框

《Java轻松实现在Excel中插入、提取或删除文本框》在日常的Java开发中,我们经常需要与Excel文件打交道,当涉及到Excel中的文本框时,许多开发者可能会感到棘手,下面我们就来看看如何使用J... 目录Java操作Excel文本框的实战指南1. 插入Excel文本框2. 提取Excel文本框内容3

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

关于MySQL将表中数据删除后多久空间会被释放出来

《关于MySQL将表中数据删除后多久空间会被释放出来》MySQL删除数据后,空间不会立即释放给操作系统,而是会被标记为“可重用”,以供未来插入新数据时使用,只有满足特定条件时,空间才可能真正返还给操作... 目录一、mysql数据删除与空间管理1.1 理解MySQL数据删除原理1.3 执行SQL1.3 使用