• 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常用优化技巧的更多相关文章

  1. Android群英传知识点回顾——第十章:Android性能优化

    10.1 布局优化 10.1.1 Android UI渲染机制 10.1.2 避免Overdraw 10.1.3 优化布局层级 10.1.4 避免嵌套过多无用布局 10.1.5 Hierarchy V ...

  2. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  3. Android群英传神兵利器读书笔记——第二章:版本控制神器——Git

    本人一直是徐医生的真爱粉,由于参加比赛耽误了8天,导致更新得有点慢,大家见谅 2.1 Git的前世今生 Git是什么 Git安装与配置 2.2 创建Git仓库 Git init Git clone 2 ...

  4. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程序员的博客平台 开发者为什么要写作 写作平台 第三方博客平台 自建博客平台 开发论坛 1 ...

  5. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 最近也是比较迷茫,但是有一点点还是要坚持的,就是学习了,最近离职了,今天也是继续温习第四章ListView,也拖了其实也挺久的了,list ...

  6. Android群英传帝落篇——程序人生,路漫漫其修远兮,吾将上下而求索!

    Android群英传帝落篇--程序人生,路漫漫其修远兮,吾将上下而求索! 当写这篇博客的时候,自2016-02-22到现在5.2号,一晃眼,也㓟两个多月就过去了,我才将这本书看完,虽然写笔记花了很大的 ...

  7. 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析

    第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...

  8. Android群英传笔记——第五章:Android Scroll分析

    Android群英传笔记--第五章:Android Scroll分析 滑动事件算是Android比较常用的效果了,而且滑动事件他本身也是有许多的知识点,今天,我们就一起来耍耍Scroll吧 一.滑动效 ...

  9. Android群英传笔记——第九章:Android系统信息和安全机制

    Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个 ...

随机推荐

  1. 用 k8s 管理机密信息【转】

    应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以密文的方式存储 ...

  2. 浅谈MSF渗透测试

    在渗透过程中,MSF漏洞利用神器是不可或缺的.更何况它是一个免费的.可下载的框架,通过它可以很容易地获取.开发并对计算机软件漏洞实施攻击.它本身附带数百个已知软件漏洞的专业级漏洞攻击工具.是信息收集. ...

  3. SDOI 种田记

    day3: 今天早上来重新看了一下,IQ--,智障的感觉2333.弱势围观了一发众神奔,发现好多人都A了第三题,然而回想起自己考试的时候傻傻的码第二题的错误代码,真的是感觉mdzz. 不想吐槽了,记得 ...

  4. Day6 - H - Balanced Lineup POJ - 3264

    For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...

  5. Font Awesome可缩放的矢量图标

    我感觉图标还行~~~这里是我修改过的,自己根据需要修改即可~~ 网址: http://fontawesome.dashgame.com/ 使用: <link rel="styleshe ...

  6. 开源免费的安卓投屏工具-Scrcpy

    最近需要使用安卓投屏在桌面上操作,一开始使用Vysor,免费版画质无法直视,发现一个开源的工具,Scrcpy,貌似效果不错,但没有GUI,命令行安装,整起(Mac) 1.安装 homebrew: 通过 ...

  7. Xshell远程连接kali,SSH服务拒绝了密码

    在kali里面/etc/ssh/目录下,修改sshd_config文件,不是ssh_config,ssh_config是针对客户端的配置文件,而sshd_config是针对服务器端的配置文件. 找到# ...

  8. Codeforces 556A:Case of the Zeros and Ones

    A. Case of the Zeros and Ones time limit per test 1 second memory limit per test 256 megabytes input ...

  9. 解决CSS背景模糊

    .banner{ background:url(banner.jpg); -moz-background-size:100% 100%; background-size:100% 100%; }

  10. js generator的两个实际应用

    generator作为一个用来操作异步的状态机, 遇到yield停止, 通过调用next()来继续操作.  今天就用generator来举例两个实际开发中的应用. 1,抽奖 function draw ...