我在我的项目中遇到的问题是:
-我有一个包含 1000 多个项目的列表视图。我不希望我的 listView 一次加载所有 1000 个项目。我只想在屏幕上显示 10 个项目,并在列表底部显示“更多”。当我单击“更多”时,它将向我的 listView 添加更多 10 个项目,而我的 listView 将有 20 个项目。它可以滚动并且“更多”按钮仍然存在,直到我的列表包含所有 1000 个项目。
有人有建议或代码示例吗?
在此先感谢,任何帮助表示赞赏。
我在我的项目中遇到的问题是:
-我有一个包含 1000 多个项目的列表视图。我不希望我的 listView 一次加载所有 1000 个项目。我只想在屏幕上显示 10 个项目,并在列表底部显示“更多”。当我单击“更多”时,它将向我的 listView 添加更多 10 个项目,而我的 listView 将有 20 个项目。它可以滚动并且“更多”按钮仍然存在,直到我的列表包含所有 1000 个项目。
有人有建议或代码示例吗?
在此先感谢,任何帮助表示赞赏。
首先 - 如果您不希望所有 1000 个项目都加载的原因是您认为它使 UI “沉重”,因为它包含 1000 个视图,那么您就错了。列表视图有一个机制,它只负责在内存中保存假定可见的项目。当列表适配器的 getView() 方法的实现正确地重新使用转换视图参数时,它工作得最好。
如果不是原因 - 那么您可以通过实现适配器在每个模块 10 位置返回来实现它 - 一个实现 onClick 侦听器的按钮,该侦听器将项目添加到逻辑数据,然后调用 notifyDataSetChanged() 以将 UI 正确刷新到新数据
经过一个小时的研究,我解决了我的问题是:
-我实现setOnScrollListener
获取我的 ListView 的 lastIndex
-创建一个线程来更新数据以adapter
使用 lastIndex 添加 10 个项目。
这里是描述
gtumcaDynamicListView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// what is the bottom iten that is visible
int lastInScreen = firstVisibleItem + visibleItemCount;
if((lastInScreen == totalItemCount) && !(loadingMore)) {
//Run background thread
Thread tt = new loadBackgroung(lastInScreen, adaptor);
tt.start();
}
}
});
class loadBackgroung extends Thread{
public int lastIndex;
public MyCustomAdaptor adaptor;
public loadBackgroung(int lastIndex, MyCustomAdaptor adaptor) {
super();
this.lastIndex = lastIndex;
this.adaptor = adaptor;
}
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0;i<10;i++){
gtuMcaBean.add(new GtuMcaBean((lastIndex + i)+" First", (lastIndex + i)+" Last", (lastIndex + i)+" Birthdate"));
}
adaptor.notifyDataSetChanged();
}
});
loadingMore = false;
}
完整代码在:http ://code.google.com/p/dynamic-listview/source/checkout
如果您使用的是网络服务。尝试创建一个存储过程,在其中给出项目的数量。每次多按一次按钮。存储过程将检索以前的数据+ 10 个数据项?这也许是一个选择