当前位置: 首页 > news >正文

RecyclerView的详细使用

首先就是了解ListView和RecyclerView的区别
  1. 1.ListView相比RecycleView的优点

a.ListView实现添加HeaderView和FooderView有直接的方法

b.分割线可以直接设置

c.ListView实现onItemClickListence和onItemLongClickListence有直接的方法

  1. 2.RecyclerView相比ListView的优点

a.封装了ViewHodler,效率更高

b.可以添加增删Item动画、侧滑功能等

c.支持局部更新,可见才更新,不可见不更新

d.插件式实现,各个功能模块化,解耦性强,使用起来更方便

选取策略

  1. 性能上: RecyclerView 并不比ListView 有明显的性能优势。

  1. 功能上: RecyclerView 适用于灵活布局时,新组件开发优先选取RecyclerView 。

不过现在总的来说基本都是优先选择使用RecyclerView的,毕竟界面排序刷新什么的会更方便

RecyclerView使用

第一步:找到recyclerView的控件

和ListView的第一步一样通过findViewById找到recyclerView的控件

RecyclerView recyclerView = findViewById(R.id.recyclerview);
第二步:创建Bean类 得到set和get的方法

解析获取的数据创建Bean类 得到set和get的方法

public class Bean {String nanm="";
public String getNanm() {
return nanm;}
public void setNanm(String nanm) {
this.nanm = nanm;}
}
第三步:创建MyRadper的对象

返回找到recyclerView控件的页面下去创建MyRadper的对象 传递数据到适配器MyRadper

MyRadper myRadper = new MyRadper(data, this);
recyclerView.setAdapter(myRadper);

以上方法和ListView基本是一模一样的


第四步:创建适配器
创建适配器MyRadper 继承 RecyclerView.Adapter<MyRadper.MyViewHolder>;这里需要自己去创建点击事件OnRecyclerItemClickListener
public class MyRadper extends RecyclerView.Adapter<MyRadper.MyViewHolder> {private List<Ben> data;    //接受数据private Context context;    //接受上下文public MyRadper(List<Ben> data, Context context) {this.data = data;this.context = context;}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//拿到布局View view = View.inflate(context, R.layout.item, null);//在ViewHolder中进行编码操作return new MyViewHolder(view);}@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {//数据设置绑定holder.tv.setText(data.get(position).getNanm());}@Overridepublic int getItemCount() {return data==null ? 0:data.size();}//创建ViewHolder类继承RecyclerView.ViewHolderpublic class MyViewHolder extends RecyclerView.ViewHolder {private TextView tv;public MyViewHolder(View itemView) {super(itemView);//找到控件tv=itemView.findViewById(R.id.item);//点击设置监听itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//判断点击MonItemClickListener是否为空if (MonItemClickListener !=null) {//对MonItemClickListener进行点击MonItemClickListener.OnRecyclerItemClickListener(getAdapterPosition());}}});}}private OnRecyclerItemClickListener MonItemClickListener;//设置点击监听事件用于外部引用public void setRecyclerItemClickListener(OnRecyclerItemClickListener listener){MonItemClickListener=listener;}//创建点击类接口public interface OnRecyclerItemClickListener{void OnRecyclerItemClickListener(int postion);}
}
第五步:点击事件编写

返回找到recyclerView控件的页面下进行点击事件编写

myRadper.setRecyclerItemClickListener(new MyRadper.OnRecyclerItemClickListener() {
@Overridepublic void OnRecyclerItemClickListener(int postion) {}
});
第六步:对recyclerView的界面布局显示进行编写

然后对recyclerView的界面布局显示进行编写

//布局
LinearLayoutManager linearLayout = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayout);

recyclerView的界面总体是这样写的

//找到控件
RecyclerView recyclerView = findViewById(R.id.recyclerview);//recyclerView布局linearLayout
LinearLayoutManager linearLayout = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayout);//传输数据到adper适配器
MyRadper myRadper=new MyRadper(data,this);
recyclerView.setAdapter(myRadper);//进行点击事件做处理
myRadper.setRecyclerItemClickListener(new MyRadper.OnRecyclerItemClickListener() {
@Overridepublic void OnRecyclerItemClickListener(int postion) {}
});

相关文章:

RecyclerView的详细使用

首先就是了解ListView和RecyclerView的区别1.ListView相比RecycleView的优点a.ListView实现添加HeaderView和FooderView有直接的方法b.分割线可以直接设置c.ListView实现onItemClickListence和onItemLongClickListence有直接的方法2.RecyclerView相比ListView的优点a.封装了Vie…...

一、向量及其线性运算

&#x1f64c;作者简介&#xff1a;数学与计算机科学学院出身、在职高校高等数学专任教师&#xff0c;分享学习经验、生活、 努力成为像代码一样有逻辑的人&#xff01; &#x1f319;个人主页&#xff1a;阿芒的主页 ⭐ 高等数学专栏介绍&#xff1a;本专栏系统地梳理高等数学…...

Spring Cloud/Spring Cloud Alibaba核心知识总结

Spring Cloud核心知识总结 springCloud是一个服务治理平台&#xff0c;若干个框架的集合&#xff0c;提供了全套的分布式系统的解决方案。包含&#xff1a;服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。 SpringC…...

Locust框架从0到1入门

Locust介绍 Locust是使用Python语言编写实现的开源性能测试工具&#xff0c;可以用来测试Web应用程序、API、数据库等各种应用程序的性能&#xff0c;使用起来简洁、轻量、高效&#xff0c;并发机制基于gevent协程&#xff0c;可以实现单机模拟生成较高的并发压力。中文意为&a…...

C++:整数(short ,int,long,long long)表示范围

整形 C用short、int、long 、long long来表示整数的整形&#xff0c;同一整形也分为有符号&#xff08;signed&#xff09;和无符号&#xff08;unsigned&#xff09;两种。数据长度与操作系统和编译器的位数有关&#xff0c;其能够表示的范围也有所不同。接下来本文将用代码的…...

会声会影2023旗舰版新功能介绍,Corel VideoStudio Ultimate2023以及电脑系统配置要求

会声会影2023中文旗舰版功能非常强大的视频编辑软件&#xff0c;非常专业的使用效果&#xff0c;会声会影2023中文版可以针对剪辑电影进行使用&#xff0c;非常强大的色彩校正方式&#xff0c;无论什么光线下进行拍摄&#xff0c;都可以通过后期进行调整&#xff0c;并且里面超…...

软件测试用例篇(5)

测试是否运行代码去划分&#xff1f; 1)静态测试: 不运行代码&#xff0c;检查代码的风格&#xff0c;格式是否符合公司的标准规范&#xff0c;检查代码的逻辑结构是否满足需求要实现的功能 看代码&#xff0c;不运行代码&#xff0c;通过静态分析代码的语法&#xff0c;编写规…...

三个修饰符

三个修饰符三个修饰符一、abstract1.1 修饰类1.2 修饰方法二、final2.1 修饰类2.2 修饰方法2.3 修饰变量2.3.1 修饰属性2.3.2 修饰局部变量2.3.3 修饰方法的参数2.3.4 常量三、static关键字3.1 修饰属性3.2 修饰方法3.3 修饰代码块3.4 继承时的执行顺序三个修饰符 一、abstrac…...

JVM调优面试题——参数命令专题

文章目录1、JVM参数有哪些&#xff1f;1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些&#xff1f;2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…...

单例模式(设计模式详解)

单例模式 描述 单例模式是一种创建型模式&#xff0c;它的目的是确保一个类只有一个实例&#xff0c;并提供全局访问点。这个实例可以被多个客户端共享&#xff0c;从而避免创建多个实例所带来的资源浪费和不必要的复杂性。 实现 懒汉模式 public class LasySingleton {priv…...

设计一份关于文化遗产视频的调查问卷

参考文献&#xff1a;[1]任洁. 重庆美食类短视频传播策略研究[D].重庆交通大学,2021.DOI:10.27671/d.cnki.gcjtc.2021.000699.&#x1f4f0;1 设计背景现已制作一些关于文化遗产的时长4-5分钟的视频&#xff0c;需要面向在校大学生收集他们对视频的看法从而分析视频的传播效果&…...

Linux内核移植

内核移植半导体厂商会从linux内核官网下载某个版本&#xff0c;将其移植到自己的CPU上&#xff0c;测试成功后就会将其开放给该半导体的厂商的CPU开发者&#xff0c;开发者下载其提供的linux内核&#xff0c;然后将其移植到自己的 产品上。1、NXP官方开发板Linux内核编译测试编…...

忆享科技优化入职培训加强人效管理全面迎接新挑战

-优化入职培训-忆享科技加强人效管理入职培训课程 ✦ KPI系统上线 ✦ 砥砺前行前言许多企业随着自身的不断发展&#xff0c;对于各类人才引进需求也越来越迫切&#xff0c;一批批新员工的加入&#xff0c;公司规模逐渐扩大&#xff0c;给公司带来了全新的血液。但在大量新员工加…...

Spring——注解开发依赖注入和管理第三方bean

自动装配&#xff08;引用类型&#xff09; 环境准备: 文件结构如下图所示,Dao层的实现类里面有一个save方法&#xff0c;Service层里面的实现类有一个BookDao的声明和一个set方法&#xff0c;同时也有一个save方法&#xff0c;配置类的扫描范围如图所示 在当前的一个测试类当…...

shell可能考你但是不常用的基础($篇)

前言 当你面试的时候&#xff0c;可能要说的架构什么都准备好了&#xff0c;也说的七七八八&#xff0c;结果到最后问了一些基础的问题答不上来或者没想起来就很容易造成社会性死亡&#xff0c;一个没答上来道心被破&#xff0c;后面就更容易懵逼了 通常造成这个问题的原因是写…...

项目管理必备:如何绘制一份优秀的甘特图?

本文一共分为两部分—— 分享60Excel甘特图模板&#xff0c;简单省事儿分享两种甘特图制作教程&#xff0c;高效快捷 第一部分——60甘特图模板 分享一些项目管理甘特图的模板&#xff0c;省事儿&#xff01;高效&#xff01;简单&#xff01; Excel甘特图表模板自取&#xf…...

【点云学习】多时相激光雷达点云

多时相雷达数据&#xff08;multi-tempral LiDAR data&#xff09; 1 一种多时相激光雷达数据建筑物变化检测方法-汪承义&#xff08;2013&#xff09; 背景&#xff1a;空间分辨率的提高引入了“类内可分性”增加与“类间可分性”降低&#xff1b;遮挡与阴影的存在使问题变得…...

使用QT C++编写一个随机生成网络ip地址的程序

根据网络搜索结果&#xff0c;使用QT C编写一个随机生成网络ip地址的程序的示例代码可能如下&#xff1a; cpp #include <QCoreApplication> #include <QRandomGenerator> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(a…...

Web前端学习:章三 -- JavaScript预热(三)

六九&#xff1a;函数的变量提升 函数的变量提升没有var高&#xff0c;var是最高的。 先提var&#xff0c;再提函数 解析&#xff1a; 1、4行打印之前没有定义变量&#xff0c;预解析触发变量提升 2、先提var&#xff0c;再提函数。所以先把var提升到最上面&#xff0c;然后提…...

java实用小技巧:判断list是否有重复项

在项目中经常会遇到这样的场景&#xff0c;就是一个list&#xff0c;根据某种规则&#xff0c;我要去判断里面是不是有重复的项。 难度不高&#xff0c;但有点烦&#xff0c;所以专门开一篇文章来记录一下&#xff0c;争取弄一个相对简洁的写法。 先看一个简单的例子&#xf…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...