Pra*_*yak 1 android pagedlist android-room android-paging android-paging-library
我已将页面大小设置为 10,观察者中的页面大小给出了正确的大小,但数据库(ROOM)中的所有项目都已加载到视图持有者中
边界回调onItemAtEndLoaded正在使用数据库中的最后一个项目进行调用。
这是我的配置:
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();
}
Run Code Online (Sandbox Code Playgroud)
存储库(mRepository.getDesigns):
public DataSource.Factory<Integer, Design> getDesigns(List<String> types, String idCode) {
return designDao.getDesigns(types,idCode);
}
Run Code Online (Sandbox Code Playgroud)
Dao:(获取设计)
@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);
Run Code Online (Sandbox Code Playgroud)
边界回调(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());
}
}
Run Code Online (Sandbox Code Playgroud)
观察者:
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);
}
};
Run Code Online (Sandbox Code Playgroud)
无法弄清楚:我什至也提到了这一点:pagedList 加载
听起来您RecyclerView位于另一个滚动视图(例如 )中NestedScrollingView,导致RecyclerView布局其所有项目。
您应该始终避免嵌套沿同一方向(即垂直)滚动的容器,而是将两者分开,或者使用 Paging 3 中内置的页眉功能,或者ConcatAdapter构建将与其他内容一起滚动的单独的页眉和页脚。
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |