• 43、gridview或者listview的adapter优化


    1、在getview时,如果是一个textview,那么不用每次都new一个或者inflater直接返回,可以先判断convertview是否为空,如果为空则new或者inflate,否则直接返回convertview

    2、如果adapter数量太多,假设需要显示1000个数据,那么如果在getview时每次都是对inflate,那么是一种对资源的浪费,且卡顿现象严重,此时可以通过结合viewHolder提高效率

    举例:

    1、adapter的getview方法

    @Override
        public View getView( int pos, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            
                ViewHolderPushHistory holder;
                final int position = pos;
                
                if(convertView == null)
                {
                    
                    CommonUtils.LogWuwei(tag, "pushHistoryAdapter  getView position is "+pos);
                    
                    LayoutInflater inflater = (LayoutInflater)ctxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    
                    holder = new ViewHolderPushHistory();
                    
                    convertView = inflater.inflate(R.layout.gridview_history_item, null);
                    
                    holder.tv_serinal_num = (TextView)convertView.findViewById(R.id.textview_grdiview_history_item_serinal_num);
                    
                    holder.tv_whether_packaged = (TextView)convertView.findViewById(R.id.textview_grdiview_history_item_whether_packaged);
                    
                    holder.buttonContent = (TextView)convertView.findViewById(R.id.button_gridview_history_item_order_content);
                
                    holder.buttonTime = (TextView)convertView.findViewById(R.id.textview_grdiview_history_item_time);
                    
                    convertView.setTag(holder);
                }
                else
                {
                    holder = (ViewHolderPushHistory)convertView.getTag();
                }
                
                
                holder.tv_serinal_num.setText(serinal_num);
    
                holder.buttonContent.setText("鱼香肉丝");
    
                holder.tv_whether_packaged.setText("打包");                
                
                holder.buttonTime.setText(“2:12”);
                
                
            
                return convertView;
            
        }

    2、定义一个存储信息的类

     1 package com.shanfubaoAndroid.kitchenMealDone;
     2 
     3 
     4 import android.widget.TextView;
     5 
     6 public class ViewHolderPushHistory {
     7     
     8     
     9     public TextView tv_serinal_num;
    10     
    11     public TextView tv_whether_packaged ;
    12     
    13     public TextView buttonContent ;
    14     
    15     public TextView buttonTime ;
    16     
    17 
    18 }
  • 相关阅读:
    diary and html 文本颜色编辑,行距和其它编辑总汇
    bash coding to changeNames
    virtualbox ubuntu 网络连接 以及 连接 secureCRT
    linux 学习6 软件包安装
    linux 学习8 权限管理
    vim 使用2 转载 为了打开方便
    ubuntu
    linux 学习15 16 启动管理,备份和恢复
    linux 学习 14 日志管理
    linux 学习 13 系统管理
  • 原文地址:https://www.cnblogs.com/kunyashaw/p/4633890.html
Copyright © 2020-2023  润新知