2013-05-13 9 views
13

Ho un gridview personalizzato in cui sto verificando il metodo Oncroll per trovare la fine dell'elenco. Se lo scorrimento raggiunge la fine dell'elenco, aggiungerà di nuovo alcuni elementi all'elenco.Il metodo Gridview onScroll viene chiamato sempre, senza scorrimento utente

gridview.setOnScrollListener(new OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(AbsListView arg0, int arg1) { 

     } 

     @Override 
     public void onScroll(AbsListView arg0, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
      // TODO Auto-generated method stub 

      int lastInScreen = firstVisibleItem + visibleItemCount;  


      //is the bottom item visible & not loading more already ? Load more ! 
      if((lastInScreen == totalItemCount) && (!loadingMore)) 
      { 
       new LoadDataTask().execute(); 

      } 
     } 
    }); 

E questa è la mia classe compito Asynchronous ..

private class LoadDataTask extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 

     if (isCancelled()) { 
      return null; 
     } 
     loadingMore = true; 
     for (int i = 0; i < mNames.length; i++) 
      mListItems.add(mNames[i]); 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     mListItems.add("Added after load more"); 


     loadingMore=false; 
     adapter.notifyDataSetChanged(); 
     super.onPostExecute(result); 
    } 

    @Override 
    protected void onCancelled() { 

    } 
} 

Ora il problema è che il metodo onscroll continua a chiamare. Non si ferma nemmeno quando l'utente non sta scorrendo. Qualcuno può avere una soluzione?

risposta

Problemi correlati