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;
        }
  • 相关阅读:
    2.Spring Boot 有哪些优点?
    3.什么是 JavaConfig?
    4.如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    Java中的异常处理机制的简单原理和应用。
    垃圾回收的优点和原理。并考虑2种回收机制。
    我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
    Request对象的主要方法:
    JSP的内置对象及方法。
    Servlet执行时一般实现哪几个方法?
    说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/4916036.html
Copyright © 2011-2022 走看看