Android 将项目添加到ListView的末尾

Android 将项目添加到ListView的末尾,android,android-listview,android-asynctask,Android,Android Listview,Android Asynctask,所以,我在做这个应用程序,你有一个列表视图,列出我从Web服务和数据库获得的项目。在这个列表中,当用户接近当前列表的末尾时,我需要一个pull来刷新和加载更多的iten。当接近尾端时,拉动刷新和加载更多iten都在工作。但是,问题是,在添加项目时,除了将项目添加到列表的顶部或末尾之外,它只会刷新整个列表,加载新项目并排除旧项目。那么,如何将项目添加到一个ListView的末尾或顶部 这里有一些代码可以帮助您: @Override protected void onPostExecute(

所以,我在做这个应用程序,你有一个列表视图,列出我从Web服务和数据库获得的项目。在这个列表中,当用户接近当前列表的末尾时,我需要一个pull来刷新和加载更多的iten。当接近尾端时,拉动刷新和加载更多iten都在工作。但是,问题是,在添加项目时,除了将项目添加到列表的顶部或末尾之外,它只会刷新整个列表,加载新项目并排除旧项目。那么,如何将项目添加到一个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();
    }

}
@覆盖
受保护的void onPostExecute(布尔结果){
Log.d(“异步4”,“post”);
SAMDUCCEAPTER适配器=新的SAMDUCCEAPTER(getActivity());
if(dialog.isShowing()){
dialog.dismise();
}
对于(int i=0;i<1;i++){
对于(int w=0;w<1;w++){
对于(int j=0;j<1;j++){
int cont=10;
cont++;
对于(int k=0;k
这段代码是我尝试添加新项目的地方。我只调用加载数据的异步任务(从WebService/数据库),然后使用onPostExecute添加较新的项


如果我的项目需要更多的代码,只要问一下,我就会放更多。提前感谢。

您的问题是,每次发送更多项目时,您都在重新创建适配器

adapter = new SampleAdapter(getActivity());
setListAdapter(adapter);
将适配器的创建移动到活动的onCreate方法,并使其成为活动类的字段

然后,不再在for循环中再次设置适配器

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

adapter.notifyDataSetChanged()

可以把它看作两个独立的东西:项目列表和连接到
列表视图的适配器。新数据到达时更新项目列表,然后使用新编辑的列表更新适配器。您正在使用的适配器似乎已将数据打包在其中。在这种情况下,您会失去对列表的一些控制,比如add()将新项放在列表中的什么位置。是的,就是这样。这是我第一个有很多活动和片段的大型应用程序,很难发现这样的错误。谢谢!