码迷,mamicode.com
首页 > 其他好文 > 详细

关于ListView性能优化

时间:2014-12-01 15:53:42      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

当listview显示的数据过多,会严重影响性能。这里主要使用的优化方法,就是优化数据适配器(Adapter)的getView方法。尽量减少显示一次数据,重新加载一次布局。

 

 

getview的加载方法一般有以下三种种方式:

(1)最慢的加载方式是每一次都重新定义一个View载入布局,再加载数据

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;

}

 

(2)正确的加载方式是当convertView不为空的时候直接重新使用convertView从而减少了很多不必要的View的创建,然后加载数据

 

    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.item, parent, false);
        }

        ((TextView) convertView.findViewById(R.id.text))
                .setText(DATA[position]);
        ((ImageView) convertView.findViewById(R.id.icon))
                .setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
        return convertView;
    }

 

 

(3)最快的方式是定义一个ViewHolder,将convetView的tag设置为ViewHolder,不为空时重新使用即可,ViewHolder 模式, 效率提高 50%

    static class ViewHolder {
        TextView text;
        ImageView icon;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.listview_item,
                    parent, false);
            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("数据");
        holder.icon.setImageBitmap(bitmap);
        return convertView;
    }

 

 参考:http://blog.csdn.net/xiaodongvtion/article/details/7918741

 

关于ListView性能优化

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/ywtk/p/4135031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!