I am using the Paging Library from Android Architecture Component. I am trying to load data through server, without any local database.
My DataSource class extends PageKeyedDataSource.
Below is my Paging.Config customisation,
PagedList.Config pageConfig = (new PagedList.Config.Builder())
.setPageSize(20)
.setInitialLoadSizeHint(30)
.setPrefetchDistance(5)
.setEnablePlaceholders(true)
.build();
I have enabled placeholders & that lands me to managing null in
PagedListAdapter class. I have done that something like below,
@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(".........");
}
}
I am unable to see placeholders at the end of a list before next API call.
My question is, Is there a way that I can specify the size of list after first API call? As my API is returning total number of items to be expected from the query. If not possible that what else I can do to see placeholders for my list.
Note : I cannot switch to ItemKeyedDataSource or PositionalDataSource because my API is set to respond on page basis.