当我切换到显示recyclerviews
有数据的片段时,我的片段事务存在一些滞后相关的问题。数据越多,越复杂,事务就越滞后。
我没有关于滚动性能等的问题。只有事务动画(在这种情况下为幻灯片)。
仅当我以片段生命周期的某些方法提供recyclerview
数据时才出现问题,例如onCreateView
,onViewCreated
...
我唯一可以克服延迟的方法是等待fragment transaction
完成(动画完成)然后将数据提供给recyclerview
。但是,我认为在为空白屏幕设置动画然后将数据添加到recyclerview
之后,这看起来并不好。
无论如何,在交易动画完成之前,我是否可以提供recyclerview
数据?
交易部分非常简单:
val fragmentTransaction: FragmentTransaction? = supportFragmentManager?.beginTransaction()
fragmentTransaction?.setCustomAnimations(animationTheme.screenRootEnter(), animationTheme.screenRootExit(), animationTheme.screenRootPopEnter(),animationTheme.screenRootPopExit())
fragmentTransaction?.add(R.id.container, fragment, tag)
fragmentTransaction?.addToBackStack(tag)
fragmentTransaction?.commit()
有趣的部分是我将数据提供给recyclerview
的部分:
fun setData(items: ArrayList<ListItem>) {
this.mItems = items
notifyItemRangeInserted(0, items.size)
}
(如前所述,从onCreateView
或类似名称中调用会导致延迟)
答案 0 :(得分:0)
我认为答案来晚了。
创建视图时,您不应该在UI线程上做很多工作。
您可以覆盖片段中的f
并找出动画何时结束。然后,您可以在[](const Point& p){ return p.x; }
适配器中添加数据。
您可以在视图创建时显示onCreateAnimator()
,并在加载数据后隐藏进度。
RecyclerView