未执行adapter.submitdata后的android分页3行

unhi4e5o  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(398)

我目前正在学习第三页图书馆。我有一个应用程序,有闪烁占位符显示,同时加载数据。当我得到数据时,我想隐藏微光布局并显示回收器视图。

lifecycleScope.launch {
            quoteViewModel.getQuotes2().collectLatest {
                binding.shimmerLayout.visibility = View.GONE // this line gets executed when view created and it causes shimmer layout to hide
                binding.homeRecyclerView.visibility = View.VISIBLE
                homeAdapter.submitData(it)
                Log.d("mytag", "after submit data") // this line isn't executed
            }
        }

这里的问题是后面的线 submitData 没有被处决,我查了一下,发现原因是 submitData 永不返回,因此不会被调用。但是我没有找到任何示例代码。有人能给我看一个解决这个问题的示例代码吗?
我想在submitdata之后执行的逻辑是隐藏shimmerlayout并显示recyclerview,但由于该逻辑在提交数据之前,因此会立即执行,因此在加载数据时,shimmerlayout似乎不会执行。

xwmevbvl

xwmevbvl1#

正如你所提到的,这是真的线后 submitData() 不会执行,因为它不会返回。你到底想用什么来实现 Paging 3 这里有吗?
我也有类似的疑问,我的 recyclerview 未更新从中获取的数据 Paging 3 因为我在用 collect 操作人员 Dustin Lam ,作者 Paging 3 图书馆让我在这里代替图书馆 collect 具有 collectLatest 这就解决了我的问题。
在您的情况下,您已经在使用 collectLatest . 一个快速解决方法是将 submitData 年底 collectLatest 因为这就是问题的根源。
正如在报告中提到的 collectLatest 定义,
终端流量操作员,通过提供的操作收集给定流量。与collect的关键区别在于,当原始流发出新值时,先前值的操作块将被取消。
请注意,替换 collect 具有 collectLatest 修复了我的案例的问题,只是因为最初我的 StateFlowemittingInitial 状态,但当数据准备就绪时,它发出 Success 未由用户收集的状态 collect 接线员 submitData 永远不会回来,但是 collectLatest 强制取消上一个操作块并收集新值。
我还不确定你的问题的解决方案,但要么用准确的答案编辑你的问题 use case 或者,如果你找不到任何替代方案,你可以直接问 Dustin Lam 就像我一样:)

相关问题