ListView重写Adapter优化上下滚动响应速度

泡在网上的日子 / 文 发表于2012-08-18 18:03 次阅读 Adapter

主要是重写Adapter的getView方法,执行时不用每次都创建一次对象。

 

// Music list adapter  
public static class MusicListAdapter extends SimpleAdapter {  
    private LayoutInflater mInflater;  
    private List<? extends Map<String, ?>> mList;  
   
    public MusicListAdapter(Context context, List<? extends Map<String, ?>> data,  
            int resource, String[] from, int[] to)  
    {  
        super(context, data, resource, from, to);  
        mInflater = LayoutInflater.from(context);  
        mList = data;  
    }  
   
    @Override  
    public int getCount() {  
        // TODO Auto-generated method stub  
        return super.getCount();  
    }  
   
    @Override  
    public Object getItem(int position) {  
        // TODO Auto-generated method stub  
        return super.getItem(position);  
    }  
   
    @Override  
    public long getItemId(int position) {  
        // TODO Auto-generated method stub  
        return super.getItemId(position);  
    }  
   
    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        // 优化list速度  
        ViewHolder holder = null;  
        if (convertView == null) {  
            convertView = mInflater.inflate(R.layout.list_items, null);  
            holder = new ViewHolder();  
            holder.ItemTitle = (TextView) convertView.findViewById(R.id.ItemTitle);  
            holder.ItemSinger = (TextView) convertView.findViewById(R.id.ItemSinger);  
            holder.ItemTime = (TextView) convertView.findViewById(R.id.ItemTime);  
            convertView.setTag(holder);  
        } else {  
            holder = (ViewHolder) convertView.getTag();  
        }  
        holder.ItemTitle.setText((String)mList.get(position).get("ItemTitle"));  
        holder.ItemSinger.setText((String)mList.get(position).get("ItemSinger"));  
        holder.ItemTime.setText((String)mList.get(position).get("ItemTime"));  
        return convertView;  
   
    }  
        
    static class ViewHolder {  
        TextView ItemTitle;  
        TextView ItemSinger;  
        TextView ItemTime;  
    }  
}

 

收藏 赞 (0) 踩 (1)
上一篇:深入理解Android消息处理系统——Looper、Handler、Thread
熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Loope
下一篇:android4.0原生日历Calendar源码分析
分析google原生日历的代码架构,从中可以学到很多知识。