#android #list #pagination #timestamp #retrofit
#Android #Список #разбивка на страницы #временная метка #модернизация
Вопрос:
Я хочу показать отсортированный список временных меток.
Вот шаги.
- добавьте сообщение: заголовок «9/15».
- проверьте список страниц (на рисунке ниже)
3. Я не вижу последнее сообщение (сообщение 9/15).
Я проверяю, что моя модернизация и postman работают хорошо (я вижу все данные 9/15 и остальные 3 данных.)
{"resultCode":200,"resultData":[{"id":108,"title":""0915"","uid":25,"updated_time":"2020-09-15 14:10:40"},
{"id":105,"title":"8/29 2","uid":25,"updated_time":"2020-08-30 03:08:08"},
{"id":98,"title":"8/29 1","uid":25,"updated_time":"2020-08-30 00:13:09"},
{"id":96,"title":"8/25","uid":25,"updated_time":"2020-08-25 11:28:18"}],"message":"Success"}
Я не могу найти причину, по которой в списке подкачки не отображалась последняя.
вот код.
public class PostDataSource extends PageKeyedDataSource<Integer, Posts> {
private static final int PAGE_SIZE = 10;
private static final int FIRST_PAGE = 1;
public ArrayList<Product> postsList = new ArrayList<>();
private long currentTimeStamp;
...
private Long getTimeStamp() {
Date currentTime = Calendar.getInstance().getTime();
long timestamp = currentTime.getTime() / 1000L;
return timestamp;
}
@Override
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull LoadInitialCallback<Integer, Posts> callback) {
userToken = getTokenResult();
RetrofitInterface retrofitInterface = RetrofitClient.getRestMethods();
currentTimeStamp = getTimeStamp();
Call<PostsResponse> postsResponseCall =
retrofitInterface.searchProduct(SORT_TYPE,FIRST_PAGE,currentTimeStamp,PAGE_SIZE);
postsResponseCall.enqueue(new Callback<PostsResponse>() {
@Override
public void onResponse(Call<PostsResponse> call, Response<PostsResponse> response) {
try {
PostsResponse postsResponse = response.body();
if (response.isSuccessful()) {
List<Posts> responseItems = postsResponse.getResultData();
callback.onResult(responseItems, null, FIRST_PAGE 1);
}
...
});
}
private Integer afterPageKey(LoadParams<Integer> params) {
Integer key;
if (params.key > 1) {
key = params.key 1;
} else {
key = 0;
}
return key;
}
@Override
public void loadAfter(@NonNull LoadParams<Integer> params, @NonNull LoadCallback<Integer, Posts> callback) {
userToken = getTokenResult();
RetrofitInterface retrofitInterface = RetrofitClient.getRestMethods();
Call<PostsResponse> postsResponseCall =
retrofitInterface.searchProduct(SORT_TYPE, params.key,currentTimeStamp,PAGE_SIZE);
postsResponseCall.enqueue(new Callback<PostsResponse>() {
@Override
public void onResponse(Call<PostsResponse> call, Response<PostsResponse> response) {
try {
PostsResponse postsResponse = response.body();
if (response.isSuccessful()) {
List<Posts> responseItems = postsResponse.getResultData();
Integer key = afterPageKey(params);
Log.e("2 current page :"," " key);
callback.onResult(responseItems, params.key 1);
}
...
});
}
}