zoukankan      html  css  js  c++  java
  • [Rosa]Android ListView 适配器原理及优化(转)

    ListView的Adapter的作用如下图所示:

     

      Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?

      先看看下面的代码:

      public View getView(int position, View convertView, ViewGroup parent) {     View item = mInflater.inflate(R.layout.list_item_icon_text, null);     ((TextView) item.findViewById(R.id.text)).setText(DATA[position]);     ((ImageView) item.findViewById(R.id.icon)).setImageBitmap(     (position & 1) == 1 ? mIcon1 : mIcon2);     return item;   }

      我们再来看看下面的代码:

      public View getView(int position, View convertView, ViewGroup parent) {     if (convertView == null) {     convertView = mInflater.inflate(R.layout.item, null);   }     ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]);     ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap(     (position & 1) == 1 ? mIcon1 : mIcon2);     return convertView;   }

      上面的代码好了很多,系统将会减少创建很多View。性能得到了很大的提升。

      下面是更优化的代码:

      public View getView(int position, View convertView, ViewGroup parent) {   ViewHolder holder;   if (convertView == null) {   convertView = mInflater.inflate(R.layout.list_item_icon_text, 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[position]);   holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);   return convertView;   }      static class ViewHolder {   TextView text;   ImageView icon;   }

      三种方法的对比图:哪个最提升性能一眼就看出来了

    原文地址:http://android.tgbus.com/Android/tutorial/201109/369818.shtml

     

  • 相关阅读:
    字符与字符串
    字符数组与字符指针
    c语言实现封装、继承和多态
    Halcon算子翻译——dev_map_par
    halcon算子翻译——dev_close_window
    Halcon算子翻译——dev_close_tool
    Halcon算子翻译——dev_close_inspect_ctrl
    Halcon算子翻译——dev_clear_window
    Halcon算子翻译——dev_update_time
    Halcon算子翻译——dev_update_pc
  • 原文地址:https://www.cnblogs.com/teamate/p/3443116.html
Copyright © 2011-2022 走看看