我有一个片段,通过创建适配器并填充数据来调整回收器视图。但是该代码导致渲染时延迟。我应该将回收器的调整移动到哪里才不会阻止主渲染?片段需要~0.8s渲染,这看起来很滞后。
// This code causes lags both in onCreateView() and in onViewCreated()
view.findViewById<RecyclerView>(R.id.shop_recycler).apply {
adapter = SourcesShopAdapter().apply {
dataset = SourcesReference.shopData.toList()
updateFiltered()
}
layoutManager = LinearLayoutManager(
context,
LinearLayoutManager.VERTICAL,
false
)
}
字符串
1条答案
按热度按时间nnsrf1az1#
这似乎是你的问题时,做的主UI线程的重载,加载的片段是不一样快,你喜欢,因为Android停止UI加载数据时.
您可以执行以下操作:创建一个后台
Thread
,将你的数据加载到列表中。这样做的时候,重负载并不主要集中在UI线程上。完成后,你可以实现一个Callback
,它是通过runOnUIhread(new Runnable...)
将你的适配器分配到列表中并使用invalidate()
重新加载ClerView来执行的:字符串
如果你愿意,你甚至可以启动一个
LoadingBar
,然后执行后台线程,并使LoadingBar.setVisibility(false)
时,无效的浏览器视图。因此,您的客户将不会有一个滞后的感觉。