ViewHolder 优化 ListView

参见这篇博客, 里面介绍了Android ListView 基础入门 简介以及深入优化

ViewHolder介绍

A ViewHolder object stores each of the component views inside the tag field of the Layout, so you can immediately access them without the need to look them up repeatedly. First, you need to create a class to hold your exact set of views.
意思就是 ViewHolder 存储了一些组件如 TextView ImageView 等等, 下次使用无需这样寻找
(TextView) convertView.findViewById(R.id.text)

源代码

package com.example.tomchen.testlistview;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by tomchen on 9/1/15. */public class IconAdapter extends ArrayAdapter<Icon> {    private int resourceId;    public IconAdapter(Context context, int resource, List<Icon> icons) {        super(context, resource, icons);        this.resourceId = resource;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Icon icon = getItem(position);        View view;        ViewHolder viewHolder = new ViewHolder();        if (convertView == null) {            convertView = LayoutInflater.from(getContext()).inflate(resourceId, null);            ImageView image = (ImageView) convertView.findViewById(R.id.icon);            TextView text = (TextView) convertView.findViewById(R.id.text);            viewHolder.imageView = image;            viewHolder.textView = text;            convertView.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.imageView.setImageResource(icon.getImageId());        viewHolder.textView.setText(icon.getName());        return convertView;    }    class ViewHolder {        private TextView textView;        private ImageView imageView;    }}

Note
getView(int position, View convertView, ViewGroup parent)中复用了变量convertView

更多相关文章

  1. [置顶] Android 2.3.5源代码 更新至android 6.0,可以下载,度娘网盘
  2. 通过eclipse查看Android源代码(Java)
  3. 【Android 开发】: Android 消息处理机制之三: Handler 中 sendM
  4. 获取Android SDK 源代码并在Eclipse中关联查看的方法
  5. 如何调试跟踪Android源代码

随机推荐

  1. 详解ASP.NET MVC SSO单点登录设计实例
  2. ADO.NET实用实例介绍
  3. ADO.NET实现对SQL Server数据库的操作教
  4. Visual Studio Debugger中你所不知道的小
  5. ASP.NET一些经典的问题详解
  6. C#连接Oracle的实例教程
  7. 实现一个验证码生成类(含数字,拼音,汉字)
  8. SignalR Self Host多端消息推送服务实例(
  9. ASP.NET Core简单介绍教程(1)_实用技巧
  10. 带你掌握OOM框架AutoMapper使用实例