2013-05-13 10 views
13

Ich habe eine angepasste Gridview, wo ich OnScroll-Methode überprüfen, um das Ende der Liste zu finden. Wenn die Bildlaufleiste das Ende der Liste erreicht, fügt sie der Liste einige Elemente hinzu.Gridview onScroll-Methode wird immer aufgerufen, ohne Benutzer scroll

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(); 

      } 
     } 
    }); 

Und das ist meine Asynchronous Aufgabe Klasse ..

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() { 

    } 
} 

Jetzt ist das Problem, dass die OnScroll Methode zum Aufruf halten. Es stoppt nicht, auch wenn der Benutzer nicht scrollt. Kann jemand eine Lösung haben?

Antwort