Android群英传知识点回顾——第四章:ListView常用优化技巧
- 4.1 ListView常用优化技巧
- 4.1.1 使用ViewHolder模式提高效率
- 4.1.2 设置项目间分割线
- 4.1.3 隐藏ListView的滚动条
- 4.1.4 取消ListView的Item点击效果
- 4.1.5 设置ListView需要显示在第几项
- 4.1.6 动态修改ListView
- 4.1.7 遍历ListView中的所有Item
- 4.1.8 处理空ListView
- 4.1.9 ListView滑动监听
- 4.2 ListView常用拓展
- 4.2.1 具有弹性的ListView
- 4.2.2 自动显示、隐藏布局的ListView
- 4.2.3 聊天ListView
- 4.2.4 动态改变ListView布局
无知识点
ViewHolder模式充分利用了ListView的视图缓存机制,避免了每次在调用getView()的时候都去通过findViewById()实例化控件。据测试,使用ViewHolder将提高50%以上的效率
设置有颜色和有厚度的分割线
设置无分割线
自然的滑动到第几项
瞬间的滑动到第几项
当数据发生变化时,可以使用notifyDataSetChanged()来刷新ListView,但是必须保证使用这个方法传进Adapter的数据List是同一个List而不能是其他对象
在开发中,会遇到ListView为空的时候,比如:购物车在没有添加物品时,需要显示该购物车没有任何物品的View,这个时候也就是ListView数据为空的时候,ListView为我们提供好了方法
在存在ListView的FrameLayout中,添加一个ImageView,作为空ListView时显示:
在Activity中实现ListView空数据时显示布局
onTouchListener:
- MotionEvent.ACTION_DOWN:触摸时操作
- MotionEvent.ACTION_MOVE:移动时操作
- MotionEvent.ACTION_UP:离开时操作
onScrollListener和onScroll:
- OnScrollListener.SCROLL_STATE_IDLE:滑动停止时
- OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:正在滚动
- OnScrollListener.SCROLL_STATE_FLING:手指抛动时
onScroll参数:
- firstVisibleItem:当前能看见的第一个Item的ID
- visibleItemCount:当前能看见的Item总数
- totalItemCount:整个ListView的Item总数
利用onScroll方法的参数可以判断滚动到最后一行:
判断上滑和下滑:
ListView也给我们提供封装好的方法获得当前可视的Item位置等信息雅思报名时间:
- 弹性的ListView……见经典代码回顾案例一
- 自动显示、隐藏布局的ListView……见经典代码回顾案例二
- 聊天ListView……见经典代码回顾案例三
- 动态改变ListView布局……见经典代码回顾案例四
这个案例测试了好久,跟书本源码一样效果还是没出来,具体原因还不清楚
由于书本上的案例比较模糊,实现了很久才做出效果,可能与作者的实现方法大同小异,不过条条道路通罗马
布局文件的编写,记得将theme设置为NoActionBar
实现这个效果比较重要的步骤就是左右布局的填充
左布局:
右布局:
聊天的实体类
比较关键的就是Adapter的getItemViewType()方法和getViewTypeCount()方法
在主Activity中实现我们的效果
经典回顾源码下载
github:https://github.com/CSDNHensen/QunYingZhuang
Android群英传知识点回顾——第四章:ListView常用优化技巧的更多相关文章
- Android群英传知识点回顾——第十章:Android性能优化
10.1 布局优化 10.1.1 Android UI渲染机制 10.1.2 避免Overdraw 10.1.3 优化布局层级 10.1.4 避免嵌套过多无用布局 10.1.5 Hierarchy V ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Android群英传神兵利器读书笔记——第二章:版本控制神器——Git
本人一直是徐医生的真爱粉,由于参加比赛耽误了8天,导致更新得有点慢,大家见谅 2.1 Git的前世今生 Git是什么 Git安装与配置 2.2 创建Git仓库 Git init Git clone 2 ...
- Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程序员的博客平台 开发者为什么要写作 写作平台 第三方博客平台 自建博客平台 开发论坛 1 ...
- Android群英传笔记——第四章:ListView使用技巧
Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...
- Android群英传帝落篇——程序人生,路漫漫其修远兮,吾将上下而求索!
Android群英传帝落篇--程序人生,路漫漫其修远兮,吾将上下而求索! 当写这篇博客的时候,自2016-02-22到现在5.2号,一晃眼,也㓟两个多月就过去了,我才将这本书看完,虽然写笔记花了很大的 ...
- 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析
第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...
- Android群英传笔记——第五章:Android Scroll分析
Android群英传笔记--第五章:Android Scroll分析 滑动事件算是Android比较常用的效果了,而且滑动事件他本身也是有许多的知识点,今天,我们就一起来耍耍Scroll吧 一.滑动效 ...
- Android群英传笔记——第九章:Android系统信息和安全机制
Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...
随机推荐
- Jquery实现列表增删改
//需求:对列表的增删改 //代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- STL中的全排列实现
permutation: 在遇到全排列问题时,在数据量较小的情况下可以使用dfs的做法求得全排列,同时我们也知道在STL中存在函数next_permutation和prev_permutation,这 ...
- Lua 完美打印数据 (例子)
例子1 : ableprint = function(data,cstring,deepIndex) --第二个参数可以为空,第三个参数不要手动添加,它是用来进行打印深度控制的. if data == ...
- CodeForces - 869B The Eternal Immortality
题意:已知a,b,求的最后一位. 分析: 1.若b-a>=5,则尾数一定为0,因为连续5个数的尾数要么同时包括一个5和一个偶数,要么包括一个0. 2.若b-a<5,直接暴力求即可. #in ...
- GoJS实例2
复制如下内容保存到空白的.html文件中,用浏览器打开即可查看效果 <!DOCTYPE html> <html> <head> <meta name=&quo ...
- 7.5 Varnish VCL的变量和应用片段
- 每天一点点之vue框架学习 - uni-app 修改上一页参数
方法一:使用微信提供的 getCurrentPages() 来实现 // 更新上一级的数据 getPrevData(){ var pages = getCurrentPages(); var curr ...
- 官网英文版学习——RabbitMQ学习笔记(六)Routing
有选择的接收消息. 上一节我们使用的是fanout exchange来实现消息的发布/订阅模式,这并没有给我们带来多大的灵活性——它只能够让人盲目地进行广播.而本节我们采用direct类型的交换器来实 ...
- Fedora 19安装以后的优化
Fedora 19安装以后的优化 转载自 http://www.zhukun.net/archives/6614 最近安装了Fedora 19 32bit,以下是一些优化配置,使之更适合国人使用. 1 ...
- Mysql自动备份与还原 转
Mysql自动备份与还原 一.自动备份:将以下代码保存为*.bat批处理脚本,然后再添加Windows定时作业,如每天凌晨2点执行:set s=%date:~0,4%%date:~5,2%%date: ...