Установите размер источника данных в PageKeyedDataSource, чтобы получить эффект заполнителя - PullRequest
0 голосов
/ 02 января 2019

Я использую библиотеку подкачки из Компонент архитектуры Android . Я пытаюсь загрузить данные через сервер, без какой-либо локальной базы данных.

Мой DataSource класс расширяется PageKeyedDataSource.

Ниже моя Paging.Config настройка,

PagedList.Config pageConfig = (new PagedList.Config.Builder())
            .setPageSize(20)
            .setInitialLoadSizeHint(30)
            .setPrefetchDistance(5)
            .setEnablePlaceholders(true)
            .build();

Я включил заполнители, и это позволяет мне управлять null в PagedListAdapter класс. Я сделал это что-то вроде ниже,

@Override
public void onBindViewHolder(@NonNull MyEventViewHolder holder, int position) {
    Article mArticle = getItem(position);

    if (mArticle != null) {
        holder.txtTitle.setText(mArticle.getTitle());
        holder.txtAuthor.setText(mArticle.getAuthor());
        holder.txtDesc.setText(mArticle.getDescription());
    } else {
        holder.txtTitle.setText("...");
        holder.txtAuthor.setText("......");
        holder.txtDesc.setText(".........");
    }
}

Я не могу видеть заполнители в конце списка перед следующим вызовом API.

У меня вопрос, есть ли способ, которым я могу указать размер списка после первого вызова API ? Поскольку мой API возвращает общее количество элементов, ожидаемых от запроса. Если это невозможно, то что еще я могу сделать, чтобы увидеть заполнители для моего списка.

Примечание : я не могу переключиться на ItemKeyedDataSource или PositionalDataSource, потому что мой API настроен на ответ на странице.

1 Ответ

0 голосов
/ 02 января 2019

Для этого я думаю, что вам нужно сделать loadInitial внутри

callback.onResult(mArticles, 0, SIZE_OF_TOTAL_ITEMS, null, 2L);

loadBefore

callback.onResult(mArticles, params.key - 1);

loadAfter

callback.onResult(mArticles, params.key + 1);

И есть SIZE_OF_TOTAL_ITEMS должен быть известен вначальное время загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...