Android中的應用就是ListView中向下滑動加載更多的功能,不要再onScroll方法中進行判斷,那樣當滑動到底部的時候,可能咱們須要觸發點什麼事件,好比加載更多、隱藏某個控件等等。java
第一種方法是直接滑動到底部就觸發ide
listview.setOnScrollListener(new OnScrollListener(){ @Override public void onScrollStateChanged(AbsListView view, int scrollState){ // 當不滾動時 if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { // 判斷是否滾動到底部 if (view.getLastVisiblePosition() == view.getCount() - 1) { //加載更多功能的代碼 } } } });
第二種是向上滑動2次隱藏
this
/** * 滾動至列表底部,讀取下一頁數據 */ public class AutoLoadListener implements OnScrollListener{ public interface AutoLoadCallBack { void execute(String url); } private int getLastVisiblePosition = 0,lastVisiblePositionY=0; private AutoLoadCallBack mCallback; public AutoLoadListener(AutoLoadCallBack callback) { this.mCallback = callback; } 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]; Log.e("x"+location[0],"y"+location[1]); if (view.getLastVisiblePosition()!=getLastVisiblePosition && lastVisiblePositionY!=y)//第一次拖至底部 { Toast.makeText(view.getContext(), "再次拖至底部,便可翻頁",500).show(); getLastVisiblePosition=view.getLastVisiblePosition(); lastVisiblePositionY=y; return; } else if (view.getLastVisiblePosition()==getLastVisiblePosition && lastVisiblePositionY==y)//第二次拖至底部 { mCallback.execute(">>>>>拖至底部"); } } //未滾動到底部,第二次拖至底部都初始化 getLastVisiblePosition=0; lastVisiblePositionY=0; } } public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) { } }