'i get list as responce of retrofit but i want ListenableFuture in ListenableFuturePagingSource so what can I do ?, suggest any example for paging
i get list as responce of retrofit but i want ListenableFuture in ListenableFuturePagingSource so what can I do ?, suggest any example for paging using Guava with Livedata
public class DataPagingSource extends ListenableFuturePagingSource<Integer, DataListItem> {
@NonNull
private RetroService service;
public DataPagingSource(RetroService retroService) {
this.service = retroService;
}
@Nullable
@Override
public Integer getRefreshKey(@NonNull PagingState<Integer, DataListItem> pagingState) {
return null;
}
@NonNull
@Override
public ListenableFuture<LoadResult<Integer, DataListItem>> loadFuture(@NonNull LoadParams<Integer> loadParams) {
Integer nextPageNumber = loadParams.getKey();
if (nextPageNumber == null) {
nextPageNumber = 1;
}
if (service.getRemoteListenableFutureDataList(nextPageNumber)!=null){
ListenableFuture<LoadResult<Integer, DataListItem>> pageFuture =
Futures.transform(service.getRemoteListenableFutureDataList(nextPageNumber), this::toLoadResult , directExecutor());
ListenableFuture<LoadResult<Integer, DataListItem>> partialLoadResultFuture =
Futures.catching(pageFuture, HttpException.class,
LoadResult.Error::new,directExecutor());
}else {
Log.i("krupal","data from service null");
}
return null;
}
private LoadResult<Integer, DataListItem> toLoadResult(@NonNull List<DataListItem> response) {
return new LoadResult.Page<>(response,
null, // Only paging forward.
response.get(1).getPostId() + 1,
LoadResult.Page.COUNT_UNDEFINED,
LoadResult.Page.COUNT_UNDEFINED);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
