这段关键代码是参考网上的,至于是谁的我也忘了,所以很抱歉,留在这里供大家使用。
private int getLastVisiblePosition = 0;
private int lastVisiblePositionY = 0;
mGridView.setOnScrollListener(new OnScrollListener() {// 滑动刷新,需要第二次滑动到底部才刷新
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
// 滚动到底部
if (view.getLastVisiblePosition() == (view.getCount() - 1)) {
View v = (View) view.getChildAt(view.getChildCount() - 1);
int[] location = new int[2];
v.getLocationOnScreen(location);// 获取在整个屏幕内的绝对坐标
int y = location[1];
if (view.getLastVisiblePosition() != getLastVisiblePosition && lastVisiblePositionY != y) {// 第一次拖至底部
Toast.makeText(view.getContext(), getResources().getString(R.string.need_second_pull), Toast.LENGTH_SHORT).show();
getLastVisiblePosition = view.getLastVisiblePosition();
lastVisiblePositionY = y;
return;
} else if (view.getLastVisiblePosition() == getLastVisiblePosition && lastVisiblePositionY == y) {// 第二次拖至底部
if (dialog == null || dialog.isShowing() == false) {// 如果没有显示dialog或者dialog为null那就去加载
/* 加载数据 */
position = position + 1;
try {
getData(position + "");
} catch (Exception e) {
e.printStackTrace();
}
} else {
Toast.makeText(view.getContext(), getResources().getString(R.string.please_waiting), Toast.LENGTH_SHORT).show();
}
}
}
// 未滚动到底部,第二次拖至底部都初始化
getLastVisiblePosition = 0;
lastVisiblePositionY = 0;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});