ListView的优化

对于ListView来说,应该算是布局中几种最常用的组件之一了,使用也十分方便,下面个大家介绍一下两种常见的优化方式.
1.条目复用优化
详情见下图:
总结: 通过对上图的理解,那么我们得知listview的item是可以进行复用的,通过什么来复用?Android已经帮我们定义了一个方法getView(final int position, View convertView,ViewGroup parent) 里面的convertView 就是专门来处理复用的item的,因此我们只要对他处理就可以了.
2.优化findviewbyid
系统寻找子孩子id的方式: 从左向右,跟树状模式一样.
每次寻找子孩子都消耗很多的资源,但是子孩子的id都是被创建出来的,
也就是是说他们是固定的,竟然如此那么我们就可以对他进行优化;
系统找R.id的模式见下图:
总结: 通过对上图的理解,那么我们得知findviewbyid(id) 的底层操作太耗时了,如果一个布局里面有一百多层,那么我就单单是找一个小小的'ImageView' 都会找半天.幸好在2009年的google IO大会上,google的工程师推出了一个优化的方式 通过自定义一个viewholder类,来对view的id进行绑定,从而减少系统查找这样的耗时操作.
两种优化方案实际代码如下:
/**
* @param position 位置
* @param convertview 复用view
* 历史回收的view对象. 当某个view对象被完全移除屏幕的时候
* 1. 尽量的复用converview(历史缓存的view),减少view对象创建的个数
* 2. 尽量的减少子孩子id的查询次数 . 定义一个viewholder
*/
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View view;
ViewHolder holder;
if (convertView != null) {
// 复用历史view对象
view = convertView;
holder = (ViewHolder) view.getTag();
} else {
// 创建新的view对象
view = View.inflate(getApplicationContext(),
R.layout.item_callsmssafe, null);
// 每次寻找子孩子消耗很多的资源cpu 内存.
// 只有当子view对象第一次被创建的时候 查询id
holder = new ViewHolder();
holder.tv_mode = (TextView) view
.findViewById(R.id.tv_black_mode);
holder.tv_phone = (TextView) view
.findViewById(R.id.tv_black_phone);
holder.iv_delete_blacknumber = (ImageView) view
.findViewById(R.id.iv_delete_blacknumber);
view.setTag(holder);
}
/**
* 子孩子id的容器
*/
static class ViewHolder {
TextView tv_phone;
TextView tv_mode;
ImageView iv_delete_blacknumber;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# ListView常见的优化
# listview
# 优化的方法
# listview优化方法
# Android中ListView的几种常见的优化方法总结
# Android ListView适配器(Adapter)优化方法详解
# Android ListView介绍及优化方案
# 实例讲解Android app开发中ListView的基本使用及优化
# 浅谈Android开发中ListView控件性能的一些优化方法
# Android编程使用缓存优化ListView的方法
# Android ListView优化之提高android应用效率
# Android中ListView Item布局优化技巧
# android listview优化几种写法详细介绍
# 复用
# 对他
# 两种
# 就可以
# 上图
# 都是
# 我就
# 半天
# 树状
# 希望能
# 几种
# 自定义
# 是说
# 不做
# 不为
# 找一个
# 谢谢大家
# 介绍一下
# 大会上
# 可以利用
相关文章:
如何通过智能用户系统一键生成高效建站方案?
如何快速搭建高效服务器建站系统?
如何彻底卸载建站之星软件?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何在阿里云虚拟服务器快速搭建网站?
建站之星微信建站一键生成小程序+多端营销系统
如何在阿里云香港服务器快速搭建网站?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
建站之星代理如何优化在线客服效率?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
已有域名和空间,如何快速搭建网站?
,怎么用自己头像做动态表情包?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
已有域名建站全流程解析:网站搭建步骤与建站工具选择
三星网站视频制作教程下载,三星w23网页如何全屏?
Thinkphp 中 distinct 的用法解析
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何有效防御Web建站篡改攻击?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何用好域名打造高点击率的自主建站?
宝塔建站后网页无法访问如何解决?
建站之星如何修改网站生成路径?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何续费美橙建站之星域名及服务?
香港服务器租用费用高吗?如何避免常见误区?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何用低价快速搭建高质量网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何通过远程VPS快速搭建个人网站?
Android自定义listview布局实现上拉加载下拉刷新功能
广州商城建站系统开发成本与周期如何控制?
制作营销网站公司,淘特是干什么用的?
独立制作一个网站多少钱,建立网站需要花多少钱?
山东网站制作公司有哪些,山东大源集团官网?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
c++怎么用jemalloc c++替换默认内存分配器【性能】
黑客如何通过漏洞一步步攻陷网站服务器?
Python文件管理规范_工程实践说明【指导】
建站之星如何优化SEO以实现高效排名?
北京网站制作网页,网站升级改版需要多久?
清除minerd进程的简单方法
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何在IIS管理器中快速创建并配置网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
建站168自助建站系统:快速模板定制与SEO优化指南
*请认真填写需求信息,我们会在24小时内与您取得联系。