1.首先适配器中要传进来一个ListView对象,然后注册OnScrollListener滚动事件。
2.然后在滚动的时候记录第一个显示和最后一个显示的Item :mFirst mVisible ,也就是当前屏幕显示的Item。
private int mFirst = 0;
private int mVisible = 0;
private class MyScrollListener implements OnScrollListener{
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState == SCROLL_STATE_IDLE){
pageImagLoad();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mFirst = firstVisibleItem;
mVisible = firstVisibleItem + visibleItemCount;
}
}
3.在scrollState状态为SCROLL_STATE_IDLE停止滚动的时候,执行一个加载图片的操作。
4.通过for循环将刚才记录的mFirst mVisible 之间的Item中的图片获取出来,存入LruCache集合中key自然就是item的position
5.然后直接发送handler 在handler中执行this.notifySetDateChangee()方法就哦了。前提是在getView中一定要有这么一段代码:
if(cache.get(String.valueOf(position))!=null){
hoderOfFile.image.setImageBitmap(cache.get(String.valueOf(position)));
}else{
hoderOfFile.image.setImageResource(R.drawable.icon_picture);
}