我正在使用分页库和Room,将我的Room数据库作为应用程序的唯一真相层。当使用Retrofit从服务器获取数据时,我会将结果保存在本地数据库中,然后使用分页库从数据库中获取数据。我正在使用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()
方法从服务器获取数据并将其保存到数据库中。我的问题是如何在从服务器加载下一页并将其保存到数据库时,在列表底部显示进度条,因为这可能需要很长时间?