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

相关文章

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超