I have set the page size to 10, The page size in the observer is giving the right size, but all the items from the database(ROOM) is getting loaded to the view holder
The boundary call back onItemAtEndLoaded is getting called with the last item in the database.
Here is my configuration:
public LiveData<PagedList<Design>> getDesignList(List<String> types, String idCode){
DataSource.Factory<Integer, Design> factory = mRepository.getDesigns(types, idCode);
PagedList.Config pagedListConfig =
(new PagedList.Config.Builder())
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(10)
.setPageSize(10)
.build();
return new LivePagedListBuilder<>(factory, pagedListConfig)
.setBoundaryCallback(**boundCallBack**)
.setFetchExecutor(mRepository.mIoExecutor)
.build();
}
Repository(mRepository.getDesigns):
public DataSource.Factory<Integer, Design> getDesigns(List<String> types, String idCode) {
return designDao.getDesigns(types,idCode);
}
Dao:(getDesigns)
@Query("SELECT * FROM Design WHERE design_type IN (:types) AND id=:idCode ORDER BY design_id ASC")
DataSource.Factory<Integer, Design> getDesigns(List<String> types, String idCode);
boundary callback(boundCallBack):
public class BoundCall extends PagedList.BoundaryCallback<Design> {
public BoundCall() {
super();
}
@Override
public void onZeroItemsLoaded() {
super.onZeroItemsLoaded();
fetchFromNetwork(null);
Log.e("load", "men-onZeroItemsLoaded");
}
@Override
public void onItemAtFrontLoaded(@NonNull Design itemAtFront) {
super.onItemAtFrontLoaded(itemAtFront);
Log.e("load", "men-onItemAtFrontLoaded: " + itemAtFront.getDesignName());
}
@Override
public void onItemAtEndLoaded(@NonNull Design itemAtEnd) {
super.onItemAtEndLoaded(itemAtEnd);
fetchFromNetwork(itemAtEnd);
Log.e("load", "men-onItemAtEndLoaded: " + itemAtEnd.getDesignName());
}
}
The observer:
designAdapter = new DesignAdapter(this);
menClothRv.setAdapter(designAdapter);
// Observer to the changed list in the
obs = new Observer<PagedList<Design>>(){
@Override
public void onChanged(PagedList<Design> designs) { //the pagesize is 10 here, but all items are loaded
if(!designs.isEmpty())
designAdapter.submitList(designs);
}
};
Unable to figure it out: I even referred to this as well: pagedList loading