预加载也就是在我将要使用的时候进行加载,也就是提前读。
懒加载就是我在什么时候使用什么时候加载。
当我们的item的布局如果不是很复杂可能感觉不到卡顿等,如果item的getView方法做了很多复杂操作,比如Glide请求数据,更改text,可见度等,滑动的时候还在做这些工作就会特别卡。
思路:
我们可以设置一个速度的阈值,当小于该速度或者ListView静止时就开始加载。
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
isScrolling = scrollState != SCROLL_STATE_IDLE;
if (isScrolling == false){
notifyDataSetChanged();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (previousFirstVisibleItem != firstVisibleItem) {
long currTime = System.currentTimeMillis();
long timeToScrollOneElement = currTime - previousEventTime;
speed = ((double) 1 / timeToScrollOneElement) * 1000;
previousFirstVisibleItem = firstVisibleItem;
previousEventTime = currTime;
if (speed < 10) {
isSmoothScrolling = true;
}else {
isSmoothScrolling = false;
}
}