我的活动在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;
我想显示一个循环progressBar,并在显示所有片段时将其设置为Gone,但是Activity没有onViewCreated()方法,是否有解决方法?
如果我覆盖Activity.onCreateView()并使用System.currentTimeMillis(),我发现在Nexus 4上显示50个片段需要7.5秒(350个片段需要20秒)。 由于每个片段只容纳5个TextViews和1个ProgressBar并且花费10-15ms来创建它的视图,我很惊讶它需要这么长时间,为什么添加片段需要花费近6倍的时间而不是绘制它?
我不知道您需要回答哪一段代码,当然可以随意提问!
非常感谢您的帮助!
答案 0 :(得分:3)
但是Activity没有onViewCreated()方法,有没有解决办法?
没有
我做错了吗?
是
你真的需要重新考虑你的设计。您可以使用ListView
Activity
(不使用ScrollView
)或ListView
使用ListFragment
轻松完成您所描述的内容ListView
Adapter
在滚动时重新使用其列表项视图 - 如果您使用自定义{{1}},它将按您的需要运行,效率非常高。您可能还想查看“视图持有者”模式,以使滚动更加高效。