Android 为什么页面列表适配器加载所有数据而不考虑页面大小?

Android 为什么页面列表适配器加载所有数据而不考虑页面大小?,android,android-room,pagedlist,android-paging,android-paging-library,Android,Android Room,Pagedlist,Android Paging,Android Paging Library,我已将页面大小设置为10,观察者中的页面大小给出了正确的大小,但数据库(文件室)中的所有项目都将加载到视图持有者 正在使用数据库中的最后一项调用边界回调OnItemEndLoaded 以下是我的配置: public LiveData<PagedList<Design>> getDesignList(List<String> types, String idCode){ DataSource.Factory<Integer, Design>

我已将页面大小设置为10,观察者中的页面大小给出了正确的大小,但数据库(文件室)中的所有项目都将加载到视图持有者

正在使用数据库中的最后一项调用边界回调OnItemEndLoaded

以下是我的配置:

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();
}
public LiveData getDesignList(列表类型,字符串idCode){
DataSource.Factory Factory=mRepository.getDesigns(类型,idCode);
PagedList.Config pagedListConfig=
(新建PagedList.Config.Builder())
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(10)
.setPageSize(10)
.build();
返回新的LivePagedListBuilder(工厂,pagedListConfig)
.setBoundaryCallback(**BoundaryCallback**)
.setFetchExecutor(mRepository.miExecutor)
.build();
}
存储库(mRepository.getDesigns):

public DataSource.Factory getDesigns(列表类型,字符串idCode){
返回designDao.getDesigns(类型,idCode);
}
Dao:(getDesigns

@Query(“从设计中选择*,其中设计输入(:type)和id=:idCode按设计顺序\u id ASC”)
Factory GetDesign(列表类型、字符串ID代码);
边界回调(boundCallBack):

公共类BoundCall扩展了PagedList.BoundaryCallback{
公共电话(){
超级();
}
@凌驾
ZeroItemsLoaded()上的公共无效{
super.onZeroItemsLoaded();
fetchFromNetwork(空);
Log.e(“加载”、“零项加载的人员”);
}
@凌驾
已加载的公共项(@NonNull Design itemAtFront){
超级前端加载(itemAtFront);
Log.e(“加载”,“前端加载:”+itemAtFront.getDesignName());
}
@凌驾
已加载公共项(@NonNull Design itemAtEnd){
super.OnItemEnd已加载(ItemEnd);
从网络获取(itemAtEnd);
Log.e(“加载”、“已加载”:+itemAtEnd.getDesignName());
}
}
观察员:

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);

        }
    };
designAdapter=新的designAdapter(本);
menClothRv.setAdapter(指定适配器);
//中已更改列表的观察者
obs=新观察员(){
@凌驾
public void onChanged(PagedList设计){//此处的页面大小为10,但所有项目都已加载
如果(!designs.isEmpty())
设计文件。提交清单(设计);
}
};
无法理解:
我甚至还提到了这一点:

听起来你的
RecyclerView
在另一个滚动视图中,比如
NestedScrollingView
,导致
RecyclerView
布局所有项目


您应该始终避免嵌套在同一方向(即,两个方向都垂直)滚动的容器,而是将这两个方向分开,使用第3页内置的页眉功能或
ConcatAdapter
来构建单独的页眉和页脚,这些页眉和页脚将与其他内容一起滚动。

听起来您的
RecyclerView
位于另一个滚动视图中,例如
NestedScrollingView
,使
RecyclerView
布局其所有项目


您应该始终避免嵌套在同一方向(即,两个方向都垂直)滚动的容器,而是将这两个方向分开,使用第3页内置的页眉功能或
ConcatAdapter
构建单独的页眉和页脚,与其他内容一起滚动。

您的
RecyclerView
包含在什么布局中?听起来您的
RecyclerView
位于另一个滚动视图中,例如
NestedScrollingView
,导致
RecyclerView
布局其所有项目。是的,您是对的。这通过将recycler视图放在NestedScrollView之外得到解决。您的
RecyclerView
包含在什么布局中?听起来您的
RecyclerView
位于另一个滚动视图中,例如
NestedScrollingView
,导致
RecyclerView
布局其所有项目。是的,您是对的。通过将recycler视图保留在NestedScrollView之外,解决了这个问题。
@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);
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());
    }
}
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);

        }
    };