将项添加到ListView的末尾

时间:2013-05-06 14:34:22

标签: android android-listview android-asynctask

所以,我正在做这个应用程序,你有一个ListView列出我从WebService和数据库获得的项目。在这个列表中,当用户接近当前列表的末尾时,我需要一个pull来刷新并加载更多itens。拉近刷新和负载更接近结束时工作。但是,问题是在添加项目时,而不是将项目添加到列表的顶部或末尾,它只是刷新加载新项目的整个列表并排除旧项目。那么,我如何在一个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添加更新的项目。

如果需要更多来自我项目的代码,请询问,我会投入更多。提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

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

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

然后在for循环

中再次设置适配器

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

adapter.notifyDataSetChanged()