Android : Activity onviewcreated

Dan*_*iel 6 android create-view android-activity

我的活动在 linearLayout(R.id.liste,在 scrollView 内)中有一些片段,需要一些时间才能显示。我将数组的大小减少到 50,但最初是 350。每个片段都是独立的,因为我需要它们响应单击并弹出对话框。

这是代码:

long start= System.currentTimeMillis();
for (Item item : dao.getList(triKey, start, end)) {
    ItemFragment fragment = ItemFragment.newInstance(item);
    FragmentTransaction fragTransaction = fragMan.beginTransaction();
    fragTransaction.add(R.id.liste, fragment);
    fragTransaction.commit(); 
}
long time = System.currentTimeMillis()-start;
Run Code Online (Sandbox Code Playgroud)

真正的问题:

我想显示一个圆形进度条并在显示所有片段时将其设置为 Gone,但 Activity 没有 onViewCreated() 方法,有什么解决方法吗?

更深入的理论问题:

如果我覆盖 Activity.onCreateView() 并使用 System.currentTimeMillis(),我发现在 Nexus 4 上显示 50 个片段需要 7.5 秒(350 个片段需要 20 秒)。由于每个片段只包含 5 个 TextViews 和 1 个 ProgressBar 并且需要 10-15 毫秒来创建它的视图,我很惊讶它需要这么长时间,为什么添加片段比绘制它花费的时间多近 6 倍?

我不知道您需要回答哪一段代码,当然可以随时提问!

非常感谢您的帮助!

Squ*_*onk 3

但 Activity 没有 onViewCreated() 方法,有什么解决方法吗?

不。

难道我做错了什么 ?

是的。

您确实需要重新考虑您的设计。ListView您可以通过在您的Activity(不使用ScrollView)中使用 a 或ListView在单个 中使用 a轻松地完成您所描述的操作ListFragment

AListView在滚动时重复使用其列表项视图 - 如果您使用自定义,Adapter它将按照您想要的方式运行并且非常高效。您可能还想查看“视图持有者”模式,以使滚动更加高效。