【发布时间】:2017-01-11 01:22:51
【问题描述】:
我想创建一个应用程序,其中我有 100 个 uri 的图像保存在数据库中。现在我希望整个数据不会从数据库中获取,只显示在列表视图中。我希望我只获取列表的当前视图屏幕的数据,因此我滚动列表的下一个项目将获取下一个数据项目,因此应用程序在列表视图中显示数据不会很慢。
【问题讨论】:
我想创建一个应用程序,其中我有 100 个 uri 的图像保存在数据库中。现在我希望整个数据不会从数据库中获取,只显示在列表视图中。我希望我只获取列表的当前视图屏幕的数据,因此我滚动列表的下一个项目将获取下一个数据项目,因此应用程序在列表视图中显示数据不会很慢。
【问题讨论】:
冗长的列表视图不会让您的滚动变慢 只需一次获取所有 100 个 uri 并填写适配器; 它会正常工作...
【讨论】:
下面有一个滚动监听器:
class EndlessScrollListener implements OnScrollListener{
private static final String TAG = "CacheToDBActivity.EndlessScrollListener";
private boolean loading = true;
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
if (!(loading) && (totalItemCount - visibleItemCount) <= (firstVisibleItem)) {
Log.d(TAG, "Load Next Page!");
loading = true;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
public boolean isLoading() {
return loading;
}
public void setLoading(boolean loading) {
this.loading = loading;
}
}
您可以实例化一个 EndlessScrollListener 并将您的列表视图的 onScrollListener 设置为:
yourListView.setOnScrollListener(endlessScrollListener);
在无尽滚动监听器的Log.d(TAG, "Load Next Page!"); 行上方,您可以从数据库中获取项目,并将它们添加到您的适配器。
致电notifyDataSetChanged();后,您的物品将显示在列表中
希望对你有帮助
【讨论】:
查看cwac endless adapter实现分页。
【讨论】: