Adapter性能提升

 

一.首先显示每条数据的XML布局文件

<LinearLayout

         xmlns:android ="http://scheemas.android.com/apk/res/android"

         android:orientation="horizontal">

         <ImageView android:id="@+id/icon"

                       android:layout_width="48dip"

                       android:layout_height="48dip"/>

       <TextView android:id="@+id/text"

                       android:layout_gravity="center_vertical"

                       android:layout_width="0dip"

                       android:layout_weight="1.0"

                       android:layout_height="wrap_context"/>

</LinearLayout>

 

二.方法

1.最简单的方法,最慢最不实用

    public View getView(int pos,View convertView,ViewGroup parent){

                 View item = mInflater.inflate(R.layout.list_item,null);

                 ((TextView) item.findViewById(R.id.text)).setText(DATA[pos]);

                 ((ImageView) item.findViewById(R.id.icon)).setImageBitmap((pos&1)==1?mIcon1:mIcon2);

                 return item;

}

 

 

2. 利用convertView回收视图,效率提高20%

public View getView(int pos, View convertView,ViewGroup parent){
           if (convertView == null) {
                  convertView = mInflater.inflate(R.layout.list_item, null);

                 }
              ((TextView) convertView.findViewById(R.id.text)).setText(DATA[pos]);
              ((ImageView) convertView.findViewButId(R.id.icon)).setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);
              return convertView;
}

 

3.使用ViewHolder模式,效率再提高50%

   static class ViewHolder{

               TextView text;

               ImageView icon;

}

   public View getView(int pos,View convertView,ViewGroup parent){

                ViewHolder holder;

                if(convertView == null){

                           convertView = mInflater.inflate(R.layout.list_item,null);

                           holder = new ViewHolder();

                           holder.text = (TextView) convertView.findViewById(R.id.text);

                           holder.icon= (ImageView) convertView.findViewById(R.id.icon);

                           convertView.setTag(holder);

                  }else{

                            holder = (ViewHolder) convertView.getTag();

                   }

                   holder.text.setText(DATA[pos]);

                   holder.icon.setImageBitmap((pos&1)==1?mIcon1:mIcon2);

                   return convertView;

 

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值