为什么LoadParams.requestedLoadSizereturns指定的页面大小是LivePagedListBuilder的3倍?

Why is it that LoadParams.requestedLoadSize returns the specified page size to LivePagedListBuilder times 3?

我正在创建 PagedList 使用:

LivePagedListBuilder(dataSourceFactory, 20)

在我的 PageKeyedDataSourceloadParams.requestedLoadSize returns 60 的实现中。我尝试使用其他数字,似乎 loadParams.requestedLoadSize 总是 returns 页面我指定的尺寸是三倍。

有人知道为什么会这样吗?

I tried with other numbers, and it seems that loadParams.requestedLoadSize always returns the page size I specified times three.

这是因为 params.requestedLoadSizeloadInitial 不同。

你给LivePagedListBuilder的第二个参数传的是pageSize,不是loadInitial

LivePagedListBuilder(dataSourceFactory, 20)

我注意到 RxPagedListBuilder 上有相同的行为。

RxPagedListBuilder(dataSourceFactory, 20)

如您所料,loadInitial 大小是pageSize 的三倍。

如果要设置loadInitial,必须将PagedList.Config传递给LivedPagedListBuilder或RxPagedListBuilder的第二个参数。

RxPagedListBuilder(dataSourceFactory,
    PagedList.Config.Builder()                
    .setInitialLoadSizeHint(INITIAL_LOAD_SIZE)
    .setPageSize(PAGE_SIZE)
    .build()
).buildObservable()

这是 PagedList 的默认行为。如果您检查 PagedList.kt#763 的源代码以获得 loadInitial 页面大小乘以 DEFAULT_INITIAL_PAGE_MULTIPLIER 其值为 3 并且在 loadInitial 之后将进行所有调用使用 params.requestedLoadSize

里面PagingConfig可以设置initialLoadSize为加载列表时第一次需要设置的数字

Pager(
        config = PagingConfig(
            pageSize = PAGE_SIZE,
            initialLoadSize = 10 //if you need to load 10 items at the first time
        )
    )