2013-05-04 70 views
6

我有GridView和我需要做兩件事情:的Android GridView的OnScrollListener ScrollUp和下滾事件

當我向下滾動,我想找到的最後一個可見的位置,比如int index = GridView.getLastVisiblePosition();

當我向上滾動,我想找到第一個可見的位置,例如int index = GridView.getFirstVisiblePosition();

我知道我可以使用下面的代碼,但我不知道如何以及在哪裏爲ScrollUp和ScrollDown編寫代碼。請幫幫我。我是Android新手。

private OnScrollListener onAnswersScrolled = new OnScrollListener() { 

    @Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
    } 
} 

回答

1

試試這個代碼可以幫助你..

GridView gridView = (GridView) gv.findViewById(R.id.grid_view); 
gridView.setOnScrollListener(new OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      // TODO Auto-generated method stub 
      Log.e("GridView","firstVisibleItem"+firstVisibleItem+"\nLastVisibleItem"+totalItemCount); 
      } 
     } 
    }); 
19

在您的活動創建全局變量myLastVisiblePos,並保存各FirstVisiblePosition,當onScroll事件查看當前FirstVisiblePosition用,如果你馬麗娟保存FirstVisiblePosition比你上次保存的FirstVisiblePosition還要小,然後滾動上下滾動:

int myLastVisiblePos;// global variable of activity 

//save first value when you create GridView 
GridView gridView = (GridView) gv.findViewById(R.id.grid_view); 
myLastVisiblePos = gridView.getFirstVisiblePosition(); 

gridView.setOnScrollListener(new OnScrollListener() { 
    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      int currentFirstVisPos = view.getFirstVisiblePosition(); 
      if(currentFirstVisPos > myLastVisiblePos) { 
       //scroll down 
      } 
      if(currentFirstVisPos < myLastVisiblePos) { 
       //scroll up 
      } 
      myLastVisiblePos = currentFirstVisPos; 
    } 
}); 
+0

非常感謝。我一定會嘗試這個選項。在我的屏幕上,如果我滾動一點點,我可以同時看到第一個和最後一個可見位置。我想我可能需要更改 – 2013-05-04 14:18:01

+0

非常感謝。我一定會嘗試這個選項。在我的屏幕上,如果我向上或向下滾動一點,我可以同時看到第一個和最後一個可見位置。如果向下滾動並將其留在miiddle中,我想在屏幕上顯示最後一個可見位置,如果向上滾動,則以類似的方式顯示我想要在屏幕上顯示第一個可見位置。我想我可能不得不改變myLastVisiblePos = GridView.getFirstVisiblePosition(); myLastVisiblePos = GridView.getLastVisiblePosition();否則,我在第一個if語句中比較1 = 1。請幫忙。 – 2013-05-04 14:31:41

+0

Shri Ksai我真的不明白你的問題,你可以添加一個截圖,瞭解你想要什麼發送我的電子郵件 – 2013-05-05 06:41:14