所以,我正在做这个应用程序,你有一个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添加更新的项目。
如果需要更多来自我项目的代码,请询问,我会投入更多。提前谢谢。
答案 0 :(得分:2)
您的问题是每次更多项目都要重新创建适配器。
adapter = new SampleAdapter(getActivity());
setListAdapter(adapter);
将适配器的创建移至活动的onCreate方法,并将其设为活动类的字段。
然后在for循环
中再次设置适配器在添加完所有内容后,只需在for循环后通知适配器;
adapter.notifyDataSetChanged()