14

リストの最後を見つけるためにonScrollメソッドをチェックしているカスタマイズされたグリッドビューがあります。スクロールがリストの最後に達すると、再びいくつかの要素がリストに追加されます。

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

            } 
        }
    });

そして、これは私の非同期タスククラスです..

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

    }
}

問題は、onScroll メソッドが呼び出し続けることです。ユーザーがスクロールしていなくても止まりません。誰でも解決できますか?

4

1 に答える 1

3

この質問の答えを確認してください: listView.onScrollListener(this) を設定すると onScroll が呼び出されますが、 touch はありません

と同じようにスーパークラスをGridView持っているため、同じことが にも当てはまります。AbsListViewListView

于 2013-07-31T12:12:50.700 に答える