Как получить отсортированные временные метки в списке paing в Android

#android #list #pagination #timestamp #retrofit

#Android #Список #разбивка на страницы #временная метка #модернизация

Вопрос:

Я хочу показать отсортированный список временных меток.

Вот шаги.

  1. добавьте сообщение: заголовок «9/15».
  2. проверьте список страниц (на рисунке ниже)

введите описание изображения здесь

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);

                    }
                  ...
        });
    }   
}