14 Stimmen

Gridview onScroll-Methode wird immer aufgerufen, ohne dass der Benutzer scrollt

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?

3voto

Scorchio Punkte 2613

Bitte überprüfen Sie die Antwort auf diese Frage: onScroll wird aufgerufen, wenn ich listView.onScrollListener(this) setze, aber ohne Berührung.

Dasselbe gilt für das GridView, da es AbsListView als Superklasse hat, genau wie ListView.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X