2013-05-04 9 views
6

ho GridView e ho bisogno di fare due cose:GridView Android OnScrollListener scrollup e scrolldown evento

Quando ho scorrere verso il basso, voglio trovare l'ultima posizione visibile ad esempio int index = GridView.getLastVisiblePosition();

Quando ho scorrere verso l'alto, mi voglio trovare la prima posizione visibile ad es. int index = GridView.getFirstVisiblePosition();

So che posso usare il seguente codice, ma non sono sicuro di come e dove scrivere un codice per ScrollUp e ScrollDown. Mi aiuti per favore. Sono nuovo di Android.

private OnScrollListener onAnswersScrolled = new OnScrollListener() { 

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

risposta

1

provare questo codice può essere utile a voi ..

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

Crea variabile globale myLastVisiblePos nella vostra attività, e salvare per ogni FirstVisiblePosition, quando onscroll evento controllare FirstVisiblePosition corrente con il FirstVisiblePosition salvato se greate dell'ultimo salvataggio FirstVisiblePosition, quindi scrollUp se piccolo quindi scrollDown:

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

Grazie mille. Sicuramente proverò questa opzione. Sul mio schermo se faccio scorrere un po 'posso vedere sia la prima che l'ultima posizione visibile allo stesso tempo. Sto pensando che potrei dover cambiare il –

+0

Grazie mille. Sicuramente proverò questa opzione. Sul mio schermo, se faccio scorrere leggermente verso l'alto o verso il basso, posso vedere sia la prima che l'ultima posizione visibile allo stesso tempo. Se si scorre verso il basso e lo si lascia nel microfono, voglio visualizzare la posizione lastvisibile sullo schermo e in modo simile se si scorre verso l'alto voglio visualizzare la prima posizione visibile sullo schermo. Sto pensando che potrei dover cambiare myLastVisiblePos = GridView.getFirstVisiblePosition(); a myLastVisiblePos = GridView.getLastVisiblePosition(); altrimenti sto confrontando 1 = 1 in prima se affermazione. Per favore aiuto. –

+0

Shri Ksai Sinceramente non capisco la tua domanda, è possibile aggiungere uno screenshot per capire ciò che si desidera inviare il mio e-mail –

Problemi correlati