ListView常见的优化方式简述

更新时间:2023-06-03 17:26:15 阅读: 评论:0

definiteListView常见的优化⽅式简述
ListView的优化
对于ListView来说,应该算是布局中⼏种最常⽤的组件之⼀了,使⽤也⼗分⽅便,下⾯个⼤家介绍⼀下两种常见的优化⽅式.
1.条⽬复⽤优化agreeable
1. 其实listview的⼯作原理就是,listview在请求屏幕可见的item数时,convertView在getVIew中是null 的.
2. 但是当屏幕向下滑动的时候(⽐如该屏幕尺⼨可显⽰7条teim),在item1被隐藏,此时出现item8时,covertView的值就不为null 了,因为
item1去填充它.
3. ⽽如果不做复⽤处理的话,item8 则会继续去findviewById, 因此其实每个item⾥的View控件,竟然ID都是⼀样的,那我们其实可以利⽤
triste
covertView的复⽤原理,来优化listview,从⽽避免OOM异常.
详情见下图:
总结: 通过对上图的理解,那么我们得知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
*/
2020年世界读书日主题@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View view;
广告业务怎么跑
网络培训机构ViewHolder holder;ppt淡雅图片
if (convertView != null) {
// 复⽤历史view对象
view = convertView;
holder = (ViewHolder) Tag();
} el {
// 创建新的view对象
view = View.inflate(getApplicationContext(),
R.layout.item_callsmssafe, null);
// 每次寻找⼦孩⼦消耗很多的资源cpu 内存.
// 只有当⼦view对象第⼀次被创建的时候查询id
傲骨贤妻 第四季holder = new ViewHolder();
holder.tv_mode = (TextView) view
aeoo
.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.tTag(holder);
}
/**
* ⼦孩⼦id的容器
*/
static class ViewHolder {
TextView tv_phone;
TextView tv_mode;
ImageView iv_delete_blacknumber;
}

本文发布于:2023-06-03 17:26:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/132741.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:优化   对象   屏幕   创建
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图