首页 > 解决方案 > 显示带有 android 分页库的进度条

问题描述

我正在使用分页库和房间,使我的房间数据库成为我的应用程序的单层真实性。当使用改造从服务器完成获取时,我将结果本地保存在数据库中,然后我使用分页库从数据库获取数据。我正在使用BoundaryCallback

@Override
    public void onZeroItemsLoaded() {
        requestAndSaveData();
    }
    @Override
    public void onItemAtEndLoaded(@NonNull Photo itemAtEnd) {
        requestAndSaveData();
}

 private void requestAndSaveData() {
        if (isRequestInProgress) return;
        isRequestInProgress = true;
        apiInterface.getPhotos(lastRequestPage, NETWORK_PAGE_SIZE).enqueue(new Callback<PhotoList>() {
            @Override
            public void onResponse(Call<PhotoList> call, Response<PhotoList> response) {
                if (response.isSuccessful()) {
                    cache.insertPhotos(response.body().getHits()); //todo only save 20 - 40 items
                    lastRequestPage++;
                    isRequestInProgress = false;
                    Log.i("deb", "number from boundary: " + response.body().getHits().size());
                }
}

当数据库中没有项目或用户滚动到最后一个项目时,我调用requestAndSaveData()从服务器获取数据并将其保存到数据库中的方法。

我的问题是如何在从服务器加载下一页并将其保存到数据库时在列表底部显示进度条,因为它可能需要很长时间?

标签: androidretrofit2android-paging

解决方案


首先,您可以通过询问如何在底部显示加载指示器RecyclerView而不是将其缩小到分页库来扩大您的问题范围。

其次,您可以通过在列表中添加一个仅用于显示负载指示器的额外单元格来轻松地在列表底部显示一个加载指示器,此处使用类似的想法来显示网络状态:

https://github.com/googlesamples/android-architecture-components/blob/master/PagingWithNetworkSample/lib/src/main/java/com/android/example/paging/pagingwithnetwork/reddit/ui/PostsAdapter.kt


推荐阅读