• ListView的优化


    1. ListView须要设置adapter,它的item是通过adapter的方法getView(int position, View convertView, ViewGroup parent)获得的。

    2. ListView中仅仅有第一屏的item须要新建,它的引用会被存在RecycleBin对象内,在拖动时后面的item实际上是重从了之前创建的item。
    3. 依据上述,ListView在须要显示item时,最開始第一屏时,getView(int position, View convertView, ViewGroup parent )的第二个參数为null,显示第二屏或者回滚显示第一屏时,getView(int position, View convertView, ViewGroup parent )第二个參数是一个原来缓存的item,我们仅仅须要在getView中把它内部数据更新就可以。
    4. 假设item结构比較复杂,在更新一个已有的item内部数据的时候,查找item内部每个元素也须要占用不少资源,所以,能够把这些内部元素的引用缓存起来,直接对其赋值,最有效的方法是把这些引用存到相应的item中,比較好的方法是使用setTag()方法。

    据上四条,可得出:
    1. 在adapter的getView(int position, View convertView, ViewGroup parent)方法中,每次都new一个新的View返回,是性能最差的,浪费了ListView巧妙设计的一片苦心。
    2. 假设item内部元素简单,getView中假设传进来的view不为空,直接为其赋值就可以。
    3. 假设item内部元素复杂,能够使用Google IO 大会中讨论的方法优化(例如以下):
    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.icon1 = (ImageView) convertView.findViewById(R.id.icon1);
                holder.text1 = (TextView) convertView.findViewById(R.id.text1);
                convertView.setTag(holder);
        }
        else{
                holder = (ViewHolder)convertView.getTag();
        }
            holder.icon1.setImageResource(R.drawable.icon);
            holder.text1.setText(mData[position]);
            return holder;
    }
    static class ViewHolder {
            TextView text1;
            ImageView icon1;
    }

    參考:http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html

  • 相关阅读:
    网页安装ipa
    windows开通https服务
    Asp.Net上传大文件带进度条swfupload
    Asp.Net采集网页方法大全(5种)
    asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求
    在IIS服务器上屏蔽IP的访问
    网络广告CPS/CPC/CPV/CPM/CPA分别是什么意思
    Asp.Net判断字符是否为汉字的方法大全
    Asp.Net使用代理IP远程获取数据
    Asp.Net保存session的三种方法
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3853018.html
Copyright © 2020-2023  润新知