前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。随着用户的下拉或者上拉手势,已经被回收的列表项要重新加载到界面上,倘若每次加载都得从头创建视图对象,势必增加了系统的资源开销。所以ViewHolder便应运而生,它在列表项首次初始化时,就将其视图对象保存起来,后面再次加载该视图时,即可直接从持有者处获得先前的视图对象,从而减少了系统开销,提高了系统的运行效率。 视图持有者的设计理念固然美好,却苦了Android开发者,每次由BaseAdapter派生新的适配器类,都必须手工处理视图持有者的相关逻辑,实在是个沉重的负担。有鉴于此,循环视图的适配器把视图持有者的重用逻辑剥离出来,由系统自行判断并处理持有者的重用操作。开发者继承RecyclerView.Adapter之后,只要完成业务上的代码逻辑即可,无需进行BaseAdapter视图持有者的手工重用。 现在由Kotlin实现循环视图的适配器类,综合前面两小节提到的优化技术,加上视图持有者的自动重用,适配器代码又得到了进一步的精简。由于循环视图适配器并不提供列表项的点击事件,因此开发者要自己编写包括点击、长按在内的事件处理代码。为方便理解循环适配器的Kotlin编码,下面以微信的公众号消息列表为例,给出对应的消息列表Kotlin代码:
RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView、GridView,以及瀑布流网格的显示效果。 RecyclerView相关工程在sdk中的路径为sdk\extras\android\support\v7\recyclerview,不过幸好用它不像用Toolbar那样麻烦,要想使用Toolbar得先导入并引用v7-appcompat工程(具体步骤参见《Android开发笔记(一百一十九)工具栏Toolbar》),而使用RecyclerView只需像其他第三方jar一样往libs目录添加android-support-v7-recyclerview.jar就好了。 但是若在Eclipse/ADT中调用RecyclerView,可能app运行时会报错“Caused by: java.lang.NoClassDefFoundError: android.support.v7.recyclerview.R$styleable”,这时就不能使用sdk\extras\android\support\v7\recyclerview下面的jar包,而要到extras/android/m2repository/com/android/support/recyclerview-v7目录下,在版本号21.0.0的子目录中找到recyclerview-v7-21.0.0.aar,该aar文件其实是个压缩文件,解压该文件可得到classes.jar,将该jar包更名并加入到你的工程,上面的运行错误应该就没有了。 下面看看强悍的RecyclerView都提供了哪些常用方法: setAdapter : 设置列表项的适配器。有关适配器的详细说明见下一标题。 setLayoutManager : 设置列表项的布局管理器。目前有三种,分别是:线性布局管理器LinearLayoutManager、网格布局管理器GridLayoutManager、瀑布流网格布局管理器StaggeredGridLayoutManager。有关布局管理器的详细说明见本文的后半部分。 addItemDecoration : 添加列表项的分割线。 removeItemDecoration : 移除列表项的分割线。 setItemAnimator : 设置列表项的增删动画。 addOnItemTouchListener : 添加列表项的触摸监听器。因为RecyclerView没有实现列表项的点击接口,所以开发者可通过这里的触摸监听器来监控用户手势。 removeOnItemTouchListener : 移除列表项的触摸监听器。
在 Module 中的 build.gradle 的 dependencies 中配置 RecyclerView 的依赖库 ;
build.gradle中 dependencies 添加下方依赖 implementation 'androidx.recyclerview:recyclerview:1.1.0' 布局 m
小伙伴们,在上文中我们介绍了Android视图组件Gallery,本文我们继续盘点,介绍一下视图控件的RecyclerView。
1、掌握UI设计中的layout布局(约束布局)与基本控件(button、text、imageview等); 2、掌握复杂控件与adapter的使用
正如RecyclerView横空出世取代ListView和GridView那样,Android也推出了二代翻页视图ViewPager2,打算替换原来的翻页视图ViewPager。与ViewPager相比,ViewPager2支持更丰富的界面特效,包括但不限于下列几点: 1、不但支持水平方向翻页,还支持垂直方向翻页; 2、支持RecyclerView.Adapter,允许调用适配器对象的notifyItem***方法,从而动态刷新某项视图; 3、除了当前页,也支持展示左右两页的部分区域; 4、支持在翻页过程中展示自定义的切换动画; 虽然ViewPager2增加了这么棒的功能,但它用起来非常简单,掌握下面几个方法就够了: setAdapter:设置二代翻页视图的页面适配器。 setOrientation:设置二代翻页视图的翻页方向。其中ViewPager2.ORIENTATION_HORIZONTAL表示水平方向,ViewPager2.ORIENTATION_VERTICAL表示垂直方向。 setPageTransformer:设置二代翻页视图的页面转换器,以便展示切换动画。 接下来利用循环适配器搭配二代翻页视图,演示看看ViewPager2的界面效果。注意RecyclerView与ViewPager2拥有各自的AndroidX库,故需修改模块的build.gradle,在dependencies节点内部补充以下两行依赖配置:
本系列文章主要介绍天猫团队开源的Tangram框架的使用心得和原理,由于Tangram底层基于vlayout,所以也会简单讲解,该系列将按以下大纲进行介绍:
在Android 5.0 版本之前,为了方便的显示多行数据,形如QQ聊天信息主界面,最常用的选择无非是ListView控件,但是ListView控件本身就有很大的局限性和效率问题(相对于RecyclerView控件)来说,比如说ListView只能竖向滚动显示数据,不能横向滚动显示数据,在一些特殊的需求中,ListView就无能为力了。在Android5.0版本之后,Android官方推出了一个新的控件:RecyclerView ,完全解耦的设计使得RecyclerView比起ListView灵活了太多,应用的场合也非常广泛。那么,就来看一下ListView和RecyclerView的用法和不同之处在哪:
原文:http://kymjs.com/code/2016/07/10/01 作者:kymjs张涛 今天推荐给各位的是张涛同学最近的一篇文章,说实话,RecyclerView 的文章挺多的,但像这样由浅入深,一步步讲到源码实现工作原理的不是那么多,推荐大家阅读。 起深入浅出这名字的时候我是慎重又慎重的,生怕被人骂标题党,写的什么破玩意还敢说深入浅出。所以还是请大家不要抱着太高的期望,因为没有期望就没有失望,就像陈润说的,超预期嘛。全当看小说的心情来看这系列文章了。 这篇文章分几个部分,简单跟大家讲一下 R
在使用 RecyclerView 这个强大的滚动控件的时候,需要为它提供一个 Adapter 适配器,这个适配器继承自 RecyclerView.Adapter 这个类。
小伙伴们,在前面的文章中,我们谈到了Android开发中的自定义view的基本概念及方法等,本文我们实际举例自定义一个adapter。
RecyclerView介绍 非著名程序员 今天我们首先来说为什么要介绍这个新组件RecyclerView,因为前几天我发布了一个常用面试题ListView的复用及如何优化的文章,介绍给一些开发者,
移动数据 : 调用 RecyclerView.Adapter 的 void notifyItemMoved(int fromPosition, int toPosition) 方法 , 传入的参数是移动前的位置和移动后的位置 ;
本篇博客主要讨论设置不同的布局管理器 , 以及不同布局管理器的参数设置 , 基础用法参考 【RecyclerView】 一、RecyclerView 最基本用法 ( 添加支持库 | 设置布局文件 | 自定义适配器 ) , 以及 RecyclerView 专栏 ;
增加单条数据 : 调用 RecyclerView.Adapter 的 void notifyItemInserted(int position) 方法 , 传入的参数是被插入的元素的当前索引 ;
修改单条数据 : 调用 RecyclerView.Adapter 的 void notifyItemChanged(int position) 方法 , 传入的参数是被删除元素的索引 ( 删除之前的索引值 ) ;
ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比使用
删除单条数据 : 调用 RecyclerView.Adapter 的 void notifyItemRemoved(int position) 方法 , 传入的参数是被删除元素的索引 ( 删除之前的索引值 ) ;
给大家推荐个好用RecyclerView适配器,也就是在百篮应用里用到的适配器。为了大家学习方便,这里简单的写下如何使用这个适配器,不做代码具体的分析,有兴趣的可以自己看下源码。当然用过类似的BRAVH可能会觉得已经都这么好的工具了为何还有使用本文的适配器。我觉得有2个优点:
小伙伴们,在上文中我们介绍了Android视图组件CheckBox,本文我们继续盘点,介绍一下视图控件的ListView。
Target(目标角色):所期待得到的接口,即目标接口。 Adaptee(被适配角色):即源接口,一般是已存在的类,现在需要适配新的接口。 Adapter(适配器角色):适配器把源接口(被适配角色)转成转换成目标接口(目标角色)。
warning: 这篇文章距离上次修改已过441天,其中的内容可能已经有所变动。
RecyclerView的使用比ListView的使用是比较复杂的,ListView的使用是五个步骤,而我们的RecyclerView的使用有7个步骤,分别为:
RecyclerView.ItemDecoration 是 RecyclerView 的内部类 , ItemDecoration 顾名思义就是作为 Item 条目装饰用的 ;
最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据。 查询了很多资料终于实现,现进行总结。 --------------------------------------------------------------------------------------------------------------------------------------------------------------- 从零开始实现一个连接多个蓝牙4.0 设备并获取数据的 Demo
RecyclerView 是 Google 官方提供的任何 基于适配器显示的视图 , 可以实现普通列表 ( ListView ) , 网格列表 ( GridView ) , 瀑布流 , 以及各种自定义形式的多容器布局 ;
AdapterView本身是一个抽象类,AdapterView及其子类的继承关系如下图:
大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧。那么来学习在Android 5.X新增的一个列表组件,那就是RecyclerView的
RecyclerView是Android中非常受欢迎的控件,RecyclerView是官方在Android5.0之后新添加的控件,推出用来替代传统的ListView和GridView列表控件,所以如果你还在使用ListView的话可以替换为RecyclerView了。
首先说明一点昨天发了一篇关于 ListView 的使用入门文章,得到了大家的一致调侃。我的想法是这样的,虽然现在 ListView 已经被 RecyclerView 替代了,但是本系列作为入门系列,力求内容完整!还是有必要提及一下这么重要的控件的,谁能保证老的项目没有 ListView 呢?
本文实例为大家分享了RecyclerView实现水平列表的具体代码,供大家参考,具体内容如下
Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用。 个人体验来说,RecyclerView绝对是一款功能强大的控件。 首先总结下RecyclerView的特点: 1.支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式 2.内部实现了回收机制,无需我们考虑View的复用情况 3.取消了onItemClick等点击事件,需要自己手动去写 -------------------------
事件监听,项中小组件就通过holder获取,整体点击的话通过mAdapter.setOnItemClickListener。
和ListView一样,RecyclerView一样需要适配器,而且这个适配器强制要求了我们必须要用Viewholder,让性能得到优化,而且getView方法不需自己写,我们只需要写好Viewholder,View的复用已经封装好了。
既然用到了RecyclerView,那么就离不开adapter,RecyclerView负责准备一个框框,adapter负责把什么数据传到框内,顾名思义适配器 详细讲解C一下,第一篇就是,讲的非常全面,附加地址Android RecyclerView最全使用详解 布局效果
前三篇重要的功能已经实现的差不多了,完成了api获取数据,封装数据,展示数据,和一些数据库操作,接着就是按照自己的意愿,搜索城市,查看此城市天气,并决定将此城市加入数据库操作,方法是尽可能地简化的,本次项目共涉及三个页面之间的跳转,逻辑清晰,条理明朗,后续更多复杂化操作,和更多重复性操作有待探索,本质上都是已有代码的延申。 先获取到全国各个城市的信息,展示在搜索城市页面,方便查找。 实现步骤:
Hello 艾维巴蒂,今天给大家介绍一下 ListView和 GridView的“大哥“— RecyclerView,这个控件是当下最流行且最常用的一个控件,并且在实战项目中它随处可见,而为什么将它称为“大哥”,请听我们娓娓道来~
本文实例为大家分享了android实现RecyclerView列表单选功能的具体代码,供大家参考,具体内容如下
RecyclerView中的位置(Position): RecyclerView 引入了一个附加的抽象层次在RecyclerView.Adapter 和RecyclerView.LayoutManager 之间,用于在布局计算时成批量地观察数据集的变化. 这样从追踪Adapter(适配器)数据变化到计算动画效果, 产生一个布局管理器(LayoutManager).它同样对提升性能很有帮助,因为所有的组件绑定发生的同事时,避免没有数据改变的组件重新绑定数据. 鉴于上述原因, 在 RecycleView 中有两种类型的与Position相关的方法:
在上一篇 RecyclerView 控件的文章中,我们看了一下ListView控件和RecyclerView控件的简单用法,那么下面我们将关注点放在RecyclerView上,毕竟RecyclerView控件在很多方面确实比ListView控件更好用。下面来看一下怎么对RecyclerView中的子项添加分隔线: 首先,我们要知道,要对RecyclerView控件中的子项添加分隔线,我们要利用RecyclerView.ItemDecoration类来实现。我们要继承RecyclerView.ItemDecoration类并且重写里面的方法来实现,一般来说,一个自定义的ItemDecoration类的基本写法:
去年很早之前,我就讲解过RecyclerView的使用,今天我们就在讲解CardView的时候,顺便再把RecyclerView同时讲解一下。RecyclerView、CardView为用于显示复杂视图的新增Widget。接下来看看如何使用吧。 RecyclerView RecyclerView介绍 RecyclerView作为替代ListView使用,它更先进,更灵活,RecyclerView标准化了ViewHolder,ListView中convertView是复用的,在RecyclerView中,是把
将数据库显示到ListView的小Demo源码地址:https://github.com/liuchenyang0515/ListView_DataBase
OnItemClickListener()接口,定义RecyclerView选项单击事件的回调接口。
领取专属 10元无门槛券
手把手带您无忧上云