0

我已经实现了一个列表视图,其中数据是通过异步任务加载的,为了加载更多数据,我使用了这里找到的代码完全复制粘贴)

主要活动

class load_data extends AsyncTask<Integer, Void, Void>{

// This asynctask takes in a page number as argument and depending on that page number
// data is loaded and stored in various String[] arrays and their length is extended as     new items are loaded

protected void onPostExecute(Void result) {

if(adapter == null){
            adapter = new Listadapter(Main.this,String[],String[],String[]);
            list.setAdapter(adapter);

            }
            else if(adapter != null){

                adapter.notifyDataSetChanged();
            }

}
    }

这个任务被称为new load_data().execute(1);

在此代码之后,我从上面的链接中加载了更多数据片段,一切正常,没有语法错误,并且在我的情况下,在达到给定阈值 (20) 后数据加载,但是没有显示新数据。我如何通知适配器已添加更多数据或已更改数据 谢谢!

编辑:加载更多类

class EndlessScrollListener implements OnScrollListener {

            private int visibleThreshold = 5;
            private int currentPage = 1;
            private int previousTotal = 0;
            private boolean loading = true;

            public EndlessScrollListener() {
            }

            public EndlessScrollListener(int visibleThreshold) {
                this.visibleThreshold = visibleThreshold;
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                if (loading) {
                    if (totalItemCount > previousTotal) {
                        loading = false;
                        previousTotal = totalItemCount;
                        currentPage++;
                    }
                }
                if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
                    // I load the next page of gigs using a background task,
                    // but you can call any function here.
                    new load_data().execute(currentPage);
                    adapter.notifyDataSetChanged();
                    loading = true;
                }
            }

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
            }
        }

list.setOnScrollListener(new EndlessScrollListener(20)); // 20 being the threshold
4

2 回答 2

2

最后!对于那些遇到同样问题的人,我有解决方案。

我注意到adapter.notifyDataSetChanged();如果您使用 String[] 数组来存储显示在列表视图行中的数据,这将不起作用。

相反,如果您List<String> list = new ArrayList<String>();在列表视图中使用和存储数据,则将使用新数据进行更新:)

于 2013-06-17T08:44:17.497 回答
1

如果您对之前的代码有任何问题,可以查看这个github 项目。

否则,如果你想加载分页等数据,你可以试试这个例子这个

于 2013-06-17T08:19:52.670 回答