【问题标题】:Show Header when Swipe to Refresh with Jetpack Paging3 Android使用 Jetpack Paging3 Android 滑动刷新时显示标题
【发布时间】:2021-08-11 10:38:54
【问题描述】:

问题说明:使用 Paging3 库,需要在用户滑动刷新时在 header 中显示加载信息。我按照here 中提供的示例进行操作。

解决方案:尝试在 LoadStateAdapter 中添加刷新标头以使用 pagingAdapter.withLoadStateHeaderAndFooter()

messagesRecyclerView.adapter = messagesAdapter.withLoadStateHeaderAndFooter(
                header = MessageHeaderStateAdapter(messagesAdapter),
                footer = MessageLoadStateAdapter()
            )

但在我快速连续滑动 5-6 次之前,它不会显示标题。

另一方面,页脚在加载更多和基于LoadState 的错误布局时显示得很好。

错误状态

加载更多状态

非常感谢任何关于如何实现这一点的指针。

【问题讨论】:

  • 尝试在 API 回调之前手动添加刷新回调延迟
  • @MRamzan 它与 API 响应无关。我放了一些日志,OnRefreshListeneronRefresh 方法在滑动时没有被调用。
  • 情况是响应很快,所以刷新标题或进度条在那个时候没有呈现,就像它的事务被跳过一样。
  • 这不可能,因为我有日志和断点。他们不会被击中。

标签: android kotlin android-recyclerview swiperefreshlayout android-paging


【解决方案1】:

withLoadStateHeader 只返回一个监听PREPEND 状态的ConcatAdapter。如果您希望标题在REFRESH 期间显示,您基本上可以从该帮助程序中复制代码,而是使用PagingDataAdapter 上的侦听器更新LoadStateAdapter 基于REFRESH LoadState

val header = MyLoadStateHeader()
adapter.addLoadStateListener { loadStates -> 
    header.loadState = loadStates.refresh 
} 

recyclerView.adapter = ConcatAdapter(header, this)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多