1,首先是listview的常规优化,当然是依据 viewhodler节省内存加载资源(部分例子代码)
@Override
public View getView(int position, android.view.View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = getLayoutInflater().inflate(R.layout.layout, parent, false);
holder.subject = (TextView) convertView.findViewById(R.id.subject);
holder.summary = (TextView) convertView.findViewById(R.id.summary);
holder.img = (ImageView) convertView.findViewById(R.id.imageView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.subject.setText(data.get(position).getSubject());
holder.summary.setText(data.get(position).getSummary());
PicassoUtils.loadImageWithSize(MainActivity.this, "http://litchiapi.jstv.com" + data.get(position).getCover(), 400, 300, holder.img);
return convertView;
}
}
/**
*设置ViewHolder ,以便快速初始化*/
private static class ViewHolder {
TextView subject;
TextView summary;
ImageView img;
}
2,当listview快速滑动时,不需要加载内存资源,设置滑动监听事件
(1),listView.setOnScrollListener(new ListScroller());//添加滚动事件(部分代码)
(2), /**
*添加listView滚动监听事件,*/
public class ListScroller implements AbsListView.OnScrollListener{
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
final Picasso picasso = Picasso.with(MainActivity.this);
if (scrollState==SCROLL_STATE_IDLE||scrollState==SCROLL_STATE_TOUCH_SCROLL){
picasso.resumeTag(MainActivity.this);//停止滑动时加载资源
}else{
picasso.pauseTag(MainActivity.this);//滑动时暂停加载资源
}
}
}