当前位置: 首页 > 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…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...