zoukankan      html  css  js  c++  java
  • ListView优化

    在获得布局填充view的时候我们一般用到的是View.inflate()方法,我们每滑动一次getview就要执行一次同样,也要填充一次布局,

    listview只能显示屏幕那么多的内容,而不用的不会马上销毁而是放到缓存里,这样我们就可以利用这点来进行优化,当有缓存的时候我

    们就要用到缓存,不用重新调用View.inflate()

    代码实现

    // 返回视图,这个方法很主要
        public View getView(int position, View arg, ViewGroup arg2) {
            View view = null;
            
        //判断是否有缓存,如果没有填充布局,有的话利用缓存。不管是缓存还是新获取的都要重新设置内容
        if(arg==null){ view = View.inflate(context, R.layout.lisviewt_item1, null); }else{ view = arg; } FriendBean fb = data.get(position); ImageView img = (ImageView) view.findViewById(R.id.iv); TextView name = (TextView) view.findViewById(R.id.tv_1); TextView gexing = (TextView) view.findViewById(R.id.tv_2); img.setImageResource(fb.getImgID()); name.setText(fb.getName()); gexing.setText(fb.getGexing()); return view; }
    private class AppAdapter extends BaseAdapter {
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return appMessage.size();
            }
    
            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                return arg0;
            }
    
            @Override
            public long getItemId(int arg0) {
                // TODO Auto-generated method stub
                return arg0;
            }
    
            @Override
            public View getView(int position, View arg1, ViewGroup arg2) {
                View v = null;
                ViewHolder viewHolder;
                if (arg1 == null) {
                    v = View.inflate(AppManagerActivity.this,
                            R.layout.item_app_show, null);
                    viewHolder = new ViewHolder();
                    viewHolder.tv_name=(TextView) v.findViewById(R.id.app_item_tv_name);
                    viewHolder.tv_location = (TextView) v.findViewById(R.id.app_item_tv_location);
                    viewHolder.img_icon = (ImageView) v.findViewById(R.id.app_item_img_icon);
                    //对应关系一致
                    v.setTag(viewHolder);
                    
                    
                } else {
                    v = arg1;
                    viewHolder = (ViewHolder) v.getTag();
                }    
                AppInfo app = appMessage.get(position);
                viewHolder.img_icon.setImageDrawable(app.getIcon());
                viewHolder.tv_name.setText(app.getName());
                if(app.isRow()){
                    viewHolder.tv_location.setText("内部存储程序");
                }else{
                    viewHolder.tv_location.setText("外部存储程序");
                }
                return v;
            }
    
        }
    
        static class ViewHolder {
            ImageView img_icon;
            TextView tv_name;
            TextView tv_location;
        }
  • 相关阅读:
    Data Mining | 二分类模型评估-ROC/AUC/K-S/GINI
    Data Mining | 二分类模型评估-混淆矩阵
    Data Mining | 数据挖掘技术基础与进阶
    Data Mining | 数据挖掘概要和方法论
    python | 模块与第三方库的安装
    SAS | 数据EDA及代码
    SAS | 数据读入思路及代码
    python | 自定义函数
    SAS | 使用SAS数据
    SAS | 逻辑库和SAS数据集
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/4916036.html
Copyright © 2011-2022 走看看