Ich habe ein angepasstes Gridview, in dem ich die onScroll-Methode überprüfe, um das Ende der Liste zu finden. Wenn das Scrollen das Ende der Liste erreicht, werden erneut einige Elemente in die Liste eingefügt.
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 - Generierter Methodenstumpf
int lastInScreen = firstVisibleItem + visibleItemCount;
//ist das untere Element sichtbar und lädt es nicht schon mehr? Weiter laden!
if((lastInScreen == totalItemCount) && (!loadingMore))
{
new LoadDataTask().execute();
}
}
});
Und das ist meine Asynchrone Task-Klasse.
private class LoadDataTask extends AsyncTask {
@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("Nach dem Laden weiter hinzugefügt");
loadingMore=false;
adapter.notifyDataSetChanged();
super.onPostExecute(result);
}
@Override
protected void onCancelled() {
}
}
Das Problem ist jetzt, dass die onScroll-Methode weiter aufgerufen wird. Sie hört nicht auf, auch wenn der Benutzer nicht scrollt. Hat jemand eine Lösung?