private class GirdTemp {
TextView nameTV;
ImageView mGPUImageView;
Bitmap image;
}

 

===========================================================================================

final GirdTemp temp;

if (convertView == null) {
convertView = mInflater.inflate(R.layout.beautify_horizon_list_items, parent,false);
temp = new GirdTemp();
temp.nameTV= (TextView)convertView.findViewById(R.id.filter_name);
temp.mGPUImageView = (ImageView) convertView.findViewById(R.id.gpuimage);

convertView.setTag(temp);
} else {
temp = (GirdTemp) convertView.getTag();
}

if(temp.image == null){
temp.image = ActivityGallery.mGPUImage.getBitmapWithFilterApplied();
temp.mGPUImageView.setImageBitmap(temp.image);
temp.mGPUImageView.setTag(temp.image);
}else{
temp.mGPUImageView.setImageBitmap((Bitmap)temp.mGPUImageView.getTag());
}

 

这里:ActivityGallery.mGPUImage.getBitmapWithFilterApplied() 为耗时操作,因此优化方案是减少它的调用,采用 setTag getTag 重复利用它的结果