package com.android.pc.ioc.image;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
public abstract class OnScrollLoaderListener implements OnScrollListener {
private boolean scroll_stats = false;
private OnStop onStop;
private boolean fling_stats = false;
/**
* listview中判断是否可以下载
*
* @author gdpancheng@gmail.com 2013-7-9 下午4:33:01
* @return
* @return boolean
*/
public boolean isLoader() {
// 既滚动 又飞行 不可以下载
if (scroll_stats && fling_stats) {
return false;
}
return true;
}
public interface OnStop {
public void refer(int first, int count);
}
private int firstVisibleItem, visibleItemCount;
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
scroll_stats = true;
this.firstVisibleItem = firstVisibleItem;
this.visibleItemCount = visibleItemCount;
onScrollListener(view, firstVisibleItem, visibleItemCount, totalItemCount);
}
public abstract void onScrollListener(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount);
public abstract void onScrollStateChange(AbsListView view, int scrollState);
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
onScrollStateChange(view, scrollState);
switch (scrollState) {
case SCROLL_STATE_IDLE:
scroll_stats = false;
fling_stats = false;
if (onStop!=null) {
onStop.refer(firstVisibleItem, visibleItemCount);
}
break;
case SCROLL_STATE_FLING:
fling_stats = true;
break;
case SCROLL_STATE_TOUCH_SCROLL:
scroll_stats = true;
fling_stats = false;
break;
default:
break;
}
}
public OnStop getOnStop() {
return onStop;
}
public void setOnStop(OnStop onStop) {
this.onStop = onStop;
}
}