M.A*_*Ali 5 android retrofit2 android-paging
我正在使用分页库和房间,使我的房间数据库成为我的应用程序的单层真相。当使用改造从服务器获取数据时,我将结果本地保存在db中,然后使用分页库从db中获取数据。我正在使用BoundaryCallback。
@Override
public void onZeroItemsLoaded() {
requestAndSaveData();
}
@Override
public void onItemAtEndLoaded(@NonNull Photo itemAtEnd) {
requestAndSaveData();
}
Run Code Online (Sandbox Code Playgroud)
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());
}
}
Run Code Online (Sandbox Code Playgroud)
当数据库中没有项目或用户滚动到最后一个项目时,我调用requestAndSaveData()从服务器获取数据并将其保存到数据库中的方法。
我的问题是,从服务器加载下一页并将其保存到数据库时,如何在列表底部显示进度条,这可能需要很长时间?
首先,您可以通过询问如何在底部显示加载指示器RecyclerView而不是将其缩小到分页库来扩大您的问题范围。
其次,您可以通过向列表添加一个仅用于显示负载指示器的额外单元格,轻松地在列表底部显示加载指示器,这里使用类似的想法来显示网络状态:
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |