2013-05-04 62 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