0

所以,我正在做这个应用程序,你有一个 ListView 列出我从 WebService 和数据库获得的项目。在此列表中,当用户接近当前列表的末尾时,我需要拉动以刷新并加载更多项目。当接近尾声时,刷新的拉动和加载更多的项目都在工作。但是,问题是在添加项目时,除了将项目添加到列表的顶部或末尾之外,它只会刷新整个列表,加载新项目并排除旧项目。那么,如何将一个项目添加到一个 ListView 的末尾或顶部?

这里有一些代码可以提供帮助:

@Override
    protected void onPostExecute(Boolean result) {
        Log.d("Async 4", "post");

        SampleAdapter adapter = new SampleAdapter(getActivity());


        if (dialog.isShowing()) {
            dialog.dismiss();
        }

        for (int i = 0; i < 1; i++) {
            for (int w = 0; w < 1; w++) {
                for (int j = 0; j < 1; j++) {
                    int cont = 10;
                    cont++;
                    for (int k = 0; k < cont; k++) {
                        adapter.add(new SampleItem("" + title[k],"" + categoria_[i],"" + data_publicao[i], 1));
                        // Log.d("", "" + title[k]);
                        setListAdapter(adapter);
                    }
                }
            }
        }
        if (dialog.isShowing()) {
            dialog.dismiss();
        }
        pullToRefreshListView.onRefreshComplete();
    }

}

这段代码是我尝试添加新项目的地方。我只是调用加载数据的异步任务(来自 WebService/数据库),并且 onPostExecute 应该添加更新的项目。

如果需要我的项目中的更多代码,请询问,我会添加更多。提前致谢。

4

1 回答 1

2

您的问题是每次感染更多项目时您都在重新创建适配器。

adapter = new SampleAdapter(getActivity());
setListAdapter(adapter);

将适配器的创建移至活动的 onCreate 方法,并使其成为活动类的字段。

然后而不是在那个 for 循环中再次设置适配器

添加完所有内容后,只需在 for 循环后通知适配器;

adapter.notifyDataSetChanged()
于 2013-05-06T14:47:21.680 回答