Android ViewHolder 優化 ListView

NellPhipps 8年前發布 | 9K 次閱讀 Android開發 移動開發

來自: http://blog.csdn.net//never_cxb/article/details/48164541


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;
}

}</pre>

Note
getView(int position, View convertView, ViewGroup parent)中復用了變量convertView

</blockquote> </div>

 本文由用戶 NellPhipps 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!