1. 优化BaseAdaptergetView()方法

1.1合理使用convertView,先判断拿到的convertView是否为空值(一般第一次都是空值),如果不是空值就拿过来直接使用,这样走getView()的时候不用每次都去new 一个view

1.2 使用viewHolder来保存findViewById得到的控件,当第一次拿到convertView时,将findViewById得到的控件保存到viewHolder里面,使用view.setTag()方法将viewHolder保存到view中,以后拿到不是空值的convertView的时候直接从viewHolder里面拿控件就可以了,这样在走getView()时,不必每次都findViewById,这种以空间换时间的做法可以提高性能。

示例代码如下:

class ViewHolder{

    ImageView p_w_picpathView;

    TextView textView;

}

然后在getView()里:

View view = convertView;

ViewHolder viewHolder;

If(view == null){

  View = LayoutFlater.from(context).inflate(R.layout........, null);

  viewHolder = new ViewHolder();

  viewHolder.p_w_picpathView = (ImageView)view.findViewById(R.id......);

  viewHolder.textView = (TextView)view.findViewById(R.id................);

  view.setTag(viewHolder);

}else{

  viewHolder = view.getTag();

}

ViewHolder.p_w_picpathView.setImageBitmap(.....);

ViewHolder.textView.setText(.....);

Return view;

2.如果listView需要加载大量的图片,则需要加入缓存池即LruCache.

3.当用户在用手势滑动listView的时候,判断用户的手势类型,如果是非常快的滑动则listView不加载任何东西只是设置一张默认的图片,当滑动停止的时候加载相应位置的信息,因为一般情况下用户在快速滑动的时候不会看内容,所以我们只需要在滑动停止的时候加载内容即可。这样可以大幅度提升listView的性能。