首先写个ViewHolder:
public class ViewHolder {
private View mConvertView;
private Activity mActivity;
private SparseArray<View> mViewArray; // 包含了View引用的SparseArray
public ViewHolder(View convertView) {
this.mConvertView = convertView;
}
public ViewHolder(Activity activity) {
this.mActivity = activity;
}
public <T extends View> T get(int viewId) {//通过ViewId得到View
if (mActivity == null) {// ListAdapter的ViewHolder
SparseArray<View> viewHolder = (SparseArray<View>) mConvertView.getTag();
if (viewHolder == null) {
viewHolder = new SparseArray<View>();
mConvertView.setTag(viewHolder);
}
View childView = viewHolder.get(viewId);
if (childView == null) {
childView = mConvertView.findViewById(viewId);
viewHolder.put(viewId, childView);
}
return (T) childView;
} else { // Activity的ViewHolder
if (mViewArray == null) {
mViewArray = new SparseArray<View>();
}
View childView = mViewArray.get(viewId);
if (childView == null) {
childView = mActivity.findViewById(viewId);
mViewArray.put(viewId, childView);
}
return (T) childView;
}
}
public void setText(int viewId, String text) {// 通过ViewId设置Text
((TextView) get(viewId)).setText(text);
}
public void setText(int viewId, Spanned text) {// 通过ViewId设置Text
((TextView) get(viewId)).setText(text);
}
public void setTextColor(int viewId, int color) {//通过ViewId设置TextColor
((TextView) get(viewId)).setTextColor(color);
}
public void setImageResource(int viewId, int resId) {//通过ViewId设置图片
((ImageView) get(viewId)).setImageResource(resId);
}
public void setImageBitmap(int viewId, Bitmap bm) {// 通过ViewId设置图片
((ImageView) get(viewId)).setImageBitmap(bm);
}
public vo