1

我想制作一个应用程序,其中有 100 个 uri 的图像保存在数据库中。现在我希望整个数据不会从数据库中获取,只显示在列表视图中。我希望我只获取列表的当前视图屏幕的数据,因此我滚动列表的下一个项目将获取下一个数据项目,因此应用程序在列表视图中显示数据不会很慢。

4

3 回答 3

3

冗长的列表视图不会让您的滚动变慢,只需一次获取所有 100 个 uri 并填写适配器;它会正常工作...

于 2012-05-11T14:42:49.350 回答
2

下面有一个滚动监听器:

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();您的项目将在列表中可见

希望这可以帮助

于 2012-05-11T14:50:13.863 回答
1

查看cwac 无限适配器以实现分页。

于 2012-05-11T14:42:43.903 回答