1.ListView是什么

  • 一个显示可滚动项目的视图组件
  • 系统使用Adapter(适配器)将列表项目插入列表
  • 适配器从来源提取内容
    下图从MVC分析的话,ListView相当于View,Adapter相当于Controller,data相当于Model

    缺点:屏幕里面只能展示有限个ItemView,却将全部的都加载出来了,十分占用内存

2.Adapter
系统有封装了一些,但是企业中并不常用
一般自定义Adapet,需要继承BaseAdapter,重写以下四个方法

getCount:要展示多少个view
getItem:处于某个位置,得到的数据是什么
getItemId:处于某个位置,数据对应的id是什么
getView:滑到某个位置,view长什么样子

重点是getView方法,position当前view的位置,convertView要被转换出来的view,判断缓存池里面是否为空,如果为空,创建一个ViewHolder,将convertView渲染出来(inflate相当于new出来),再对viewHolder的子控件进行赋值,最后通过setTag将viewHolder和convertView关联。

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = View.inflate(parent.getContext(), R.layout.number_list_item, null);holder.listItemNumberView = (TextView) convertView.findViewById(R.id.tv_item_number);holder.viewHolderIndex = (TextView) convertView.findViewById(R.id.tv_view_holder_instance);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.listItemNumberView.setText(String.valueOf(position));holder.viewHolderIndex.setText(String.format("ViewHolder index: %s", position));int backgroundColorForViewHolder = ColorUtils.getViewHolderBackgroundColorFromInstance(convertView.getContext(), position % 10);convertView.setBackgroundColor(backgroundColorForViewHolder);return convertView;}


如果没有viewHolder,以下代码每次都要再写一遍

(TextView) convertView.findViewById(R.id.tv_item_number);
(TextView) convertView.findViewById(R.id.tv_view_holder_instance);

而findViewById是一个耗时的工作

列表组件之ListView相关推荐

  1. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  2. 精通android布局,Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个 ...

  3. Flutter ListView (动态)列表组件、水平列表组件、图标组件详解

    Flutter ListView (动态)列表组件.水平列表组件.图标组件 Flutter ListView 基础列表组件.水平列表组件.图标组件 列表常见的几种情况: 垂直列表 垂直图文列表 横向列 ...

  4. WPF 项目开发入门(五)ListView列表组件 与 Expander组件

    WPF 项目开发入门(一) 安装运行 WPF 项目开发入门(二) WPF 页面布局 WPF 项目开发入门(三)WPF 窗体与页面 WPF 项目开发入门(四) MVVM 模式 与 TreeView树组件 ...

  5. React Native FlatList和SectionList列表组件

    FlatList 之前使用的组件是ListView,当时要添加一个下拉刷新,上拉加载的功能,所以对ListView做了一些封装,但是后来看官方文档,不建议再使用ListView,因为效率问题,做过An ...

  6. [转]Shared——RN如何实现一个ExpandableList(可展开列表)组件

    作者:小石头若海 原文地址:https://segmentfault.com/a/1190000011754908 RN如何实现一个ExpandableList(可展开列表)组件 讨论与分析 首先,我 ...

  7. GitChat · 移动开发 | 征服React Native—列表组件

    GitChat 作者:Li Luo 原文:征服React Native-列表组件 关注公众号:GitChat 技术杂谈,一本正经的讲技术 前言 移动应用往往受限于屏幕大小,而数据内容长度的不确定性,在 ...

  8. Android Studio 中列表视图(ListView)的应用

    目录 引言 一.列表视图的作用 二.列表视图的工作原理和工作方式 三.准备数据源 四.适配器的使用 五.布局文件中的列表视图 六.自定义列表项布局 七.列表项点击事件处理 八.列表的优化 十.示例代码 ...

  9. axure按钮切换颜色_如何用Axure画出Web产品的列表组件:基础画法

    Web产品的列表组件在画原型的时候比较常见,所以PM有必要深入了解它的各种交互效果和对应的原型画法. 除了通过表格来画出简单列表之外,我们还可以通过中继器来画出列表,相应的原型效果请查看https:/ ...

最新文章

  1. 【django轻量级框架】云端系统之Django框架
  2. SAP Fiori : Response from creating in local store
  3. 贝叶斯优化python包_Bayesian2D-用贝叶斯优化方法求任意二维函数的最大值或最小值的软件包-Juhan Raidal...
  4. dim private public static_PHP中const,static,public,private,protected的区别
  5. RS 学习笔记 3-1
  6. WinForm DataGridView 绑定泛型List(ListT)/ArrayList不显示的原因和解决
  7. 配置ganesha-nfs对接rgw
  8. opencv Harris角检测
  9. archlinux安装个简单桌面icewm
  10. 一文读懂:云上用户如何灵活应用定制化网络服务
  11. BT601、BT656和BT.709、BT1120
  12. RN对接京东支付sdk(Android)
  13. Mac视频下载转换器MovieSherlock使用教程
  14. Win7系统怎么卸载IE浏览器
  15. 直流电源_稳压管稳压电路
  16. 第十一届蓝桥杯省赛:纪念日
  17. ISP—图像调试实习生(第14天)
  18. 关系模式(关系模式必须遵循)
  19. mysql使用jdbc进行批量插入时把事务设为手动提交比事务自动提交速度快了10倍
  20. jmeter工具进行性能测试

热门文章

  1. iOS 计算两个日期之间的差值
  2. 忘记Rxjava吧,你应该试试Kotlin的协程
  3. 《重构-改善既有代码的设计》读书笔记(二)
  4. Linux中断(interrupt)子系统之一:中断系统基本原理【转】
  5. Linux磁盘阵列技术详解(二)--raid 1创建
  6. Centos中文输入法安装以及切换
  7. Velocity 入门(一)
  8. Lambda表达式可以被转换为委托类型
  9. javascript/dom:原生的JS写选项卡方法
  10. Struts2基础(1)_MVC