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布局给它赋值。

如下

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里面拿即可。

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;

 这样能优化不少加载速度,减少内存使用。

posted @ 2014-03-26 17:15  answer_cp  阅读(316)  评论(0编辑  收藏  举报