2013-05-04 10 views
6

Mam gridview i trzeba zrobić dwie rzeczy:Android GridView OnScrollListener scrollup i scrolldown wydarzenie

Kiedy przewinąć w dół, chcę znaleźć ostatnią widocznym miejscu np int index = GridView.getLastVisiblePosition();

Kiedy przewijać w górę, ja chcę znaleźć pierwszą widoczną pozycję, np.

Wiem, że mogę użyć następującego kodu, ale nie jestem pewien jak i gdzie napisać kod dla ScrollUp i ScrollDown. Proszę pomóż mi. Jestem nowy na Androida.

private OnScrollListener onAnswersScrolled = new OnScrollListener() { 

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

Odpowiedz

1

Spróbuj kod może być pomocne dla Ciebie ..

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

Utwórz zmienną globalną myLastVisiblePos w swojej działalności i zapisać dla każdego FirstVisiblePosition, gdy onScroll wydarzenie sprawdzić aktualny FirstVisiblePosition z zapisanego FirstVisiblePosition jeżeli greate niż twój ostatni zapisany FirstVisiblePosition następnie przewinąć, jeśli mały, a następnie przewiń:

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

Dziękuję bardzo. Zdecydowanie wypróbuję tę opcję. Na moim ekranie, jeśli trochę przewijam, widzę jednocześnie pierwszą i ostatnią widoczną pozycję. Myślę, że będę musiał zmienić –

+0

Dziękuję bardzo. Zdecydowanie wypróbuję tę opcję. Na moim ekranie, jeśli przewijam trochę w górę lub w dół, widzę jednocześnie pierwszą i ostatnią widoczną pozycję. Jeśli przewińę w dół i zostawiam go w miiddle, chcę wyświetlić na ekranie pozycję widoczną w pionie iw podobny sposób, jeśli przewijam w górę Chcę wyświetlić widoczną pozycję na ekranie. Myślę, że będę musiał zmienić myLastVisiblePos = GridView.getFirstVisiblePosition(); to myLastVisiblePos = GridView.getLastVisiblePosition(); w przeciwnym razie porównuję 1 = 1 w pierwszym poleceniu if. Proszę pomóż. –

+0

Shri Ksai Szczerze nie rozumiem twojego pytania, możesz dodać zrzut ekranu, aby zrozumieć, co chcesz wysłać mój e-mail –

Powiązane problemy