通过设置一个标志,在adapter.notifyDataSetChanged()的时候,如果是已经加载过的项目,不必再重新加载数据。
例如:
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.gv_fenlei_item, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
//得到标志,如果是已经加载过的直接返回
String newUrl = (String) holder.imageView.getTag();
if (newUrl.equals(((FenleiItem) getItem(i)).getFpicurl())) {
return convertView;
}
}
FenleiItem item = (FenleiItem) getItem(i);
holder.title.setText(item.getItemname());
ImageLoader.getInstance().displayImage(item.getFpicurl(), holder.imageView, CommonSettings.options2);
//设置标志
holder.imageView.setTag(item.getFpicurl());
return convertView;
}