【问题标题】:Why is it that LoadParams.requestedLoadSize returns the specified page size to LivePagedListBuilder times 3?为什么 LoadParams.requestedLoadSize 返回指定的页面大小给 LivePagedListBuilder 乘以 3?
【发布时间】:2021-12-07 02:04:33
【问题描述】:

我正在创建一个PagedList 使用:

LivePagedListBuilder(dataSourceFactory, 20)

在我的PageKeyedDataSource 实现中,loadParams.requestedLoadSize 返回 60。我尝试使用其他数字,似乎loadParams.requestedLoadSize 总是返回我指定的页面大小乘以三。

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

【问题讨论】:

  • 因为默认的PagedList.Config 强制要求 - 如果您不喜欢,请使用LivePagedListBuilder(Factory<Key, Value> dataSourceFactory, PagedList.Config config)
  • @pskink 你是对的。原来PagedList.ConfigsetPageSizesetInitialLoadSizeHint,后者被用作初始页面大小。不错的选择,但我认为将其与通知的页面大小不同作为默认值是违反直觉的。无论如何,非常感谢。您介意发表您的评论作为答案,以便我接受吗?
  • 哦,发布一个带有一些详细额外信息的自我答案

标签: android pagination kotlin android-architecture-components


【解决方案1】:

我尝试了其他数字,似乎 loadParams.requestedLoadSize 总是返回我指定的页面大小的三倍。

这是因为loadInitial 上的params.requestedLoadSize 不同。

你传递给 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()

【讨论】:

  • 我想知道pagesize和initialiliadsizehint有什么用。即使我将页面大小设置为 10 并在第一次调用中从服务器发送 20 个数据,它也会给我一组 20。那么这个页面大小是用来做什么的?
  • 谢谢,我也尝试过调试为什么每次第一次加载这个数字会增加 3 倍。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2018-03-12
      • 2020-04-18
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2011-08-24
      相关资源
      最近更新 更多