Android ViewHolder 優化 ListView
來自: 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>