Пагинация для OkHttp
Всем привет! В своем приложении я использую API которое предоставляет мне 100 записей на 1 страницу. Получение API реализовано через OkHttp. Чтобы получить доступ ко второй странице нужно добавить в конец ссылки ?page=2. В API указывается сколько всего записей и страниц:
"pagination":{
"total":1565
"count":100
"per_page":100
"current_page":1
"total_pages":16
"links":{
"next":"https://link?page=2"
}
}
Показ записей в приложении реализован с помощью RecyclerView, файлов Adapter и Item. И все это в Fragment, а не Activity. Как мне после выгрузки 100 записей добавить в конец ссылки ?page=2 и чтобы новые записи добавлялись ниже старых в тот-же RecyclerView? Я знаю, как можно реализовать кнопку "показать 2 страницу" и чтобы она передавала данные в новый фрагмент... Но я хочу чтобы все записи были на одной странице. Большое Спасибо!
Ответы (1 шт):
Вот какой ответ придумал я, может кто-то предложит что-то получше)
int pages = 1;
int current_page;
int total_pages;
Content content;
private class Content extends AsyncTask<Void, Void, Void> {
...
protected Void doInBackground(Void... voids) {
try {
...
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https:link.com/&page=" + pages)
.get();
current_page = Jarray_pagination_p.getInt("current_page");
total_pages = Jarray_pagination_p.getInt("total_pages");
...
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
Adapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
if (current_page != total_pages){
++pages;
content = new Content();
content.execute();
}
}
}