Android ListView优化简述
一般要继承BaseAdapter类,然后重写 getView(int position,View convertview,View parent);
我们先大概了解下三个参数的含义
1. postion 此item在listview的位置/顺序。
2.convertview item 就像是一个子布局,经过填充数据后,放在书架(listview)的a层上。
3.parent parent就是2种的a层。
优化主要在2中。
首先要得到一个layout,然后找到其中的对应组件,然后进行数据填充,然后返回layout。
convertview 就是每次inflate的layout。这个东西可以复用,就是如果赋过值,它就会一直存在。
所以,优化第一步,采用converview 来获取对应组件,然后进行数据填充。当然第一次converview为空,需要inlfate布局给它赋值。
如下
1
2
3
4
5
6 |
public View getView( int
position,View convertview,View parent){ if (convertview== null ) //第一次加载 { convertview=inflater.inflate(R.layout.a, null ); } } |
这样就不用每次都inflate了。
然后还需要做的事就是findViewById();来获取convertview的对应组件,进行数据填充。
这个时候也可以优化。使用ViewHolder ,把对应组件赋给它里面的对应属性。然后把它设置给convertview.这样每次获取对应组件,不用每次都findview...直接从convertview里面拿即可。
1
2
3
4
5
6
7
8
9
10
11 |
ViewHolder holder; if (convertview== null ){ ....; holder= new
ViewHolder(); holder.text=convertview.findViewById(); convertview.setTag(holder); } else { holder=(ViewHolder)convertview.getTag(); } holder.text.setText( "this is a apple" ); return
convertview; |
这样能优化不少加载速度,减少内存使用。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。