我有这种情况我想讨论:
我有一个列表视图,它的目的是显示25个商店。 对于我想要的设计:
2个布局,第一个布局: 商店的一张大照片(从数据库下载)。 如果商店属于评级最高的商店列表(该图标在我的应用上),则为1个图标 1 textview(下载字符串)
第二个: 3篇textviews。(下载字符串)
Everytextview有自定义字体。
正如您可以想象的那样,这对每个项目来说都是一项艰巨的任务。
我的主要问题是:
如果我下载了所有内容而不是制作列表视图,我是否会获得更好的性能?我会使用这些数据填充滚动视图?
创建布局可能需要更多一些,但可能是滚动更顺畅或者我错了?
答案 0 :(得分:5)
您可以对ListView
执行相同的操作(下载所有内容并显示),但我不认为“下载所有内容”实际上会带来任何性能改进(除非您谈论缓存)。
ScrollView
将导致更糟糕的内存性能,因为您必须一次创建并保留25个视图。相反,ListView
在滚动时重复使用相同的视图,这将导致创建大约与屏幕上相同的视图。
使用ScrollView
,如果数据集发生变化,您必须以某种方式重新填充25个视图。在最坏的情况下,重新创建所有视图。
此外,与ScrollView
一起,你必须同时处理内存中的25张大照片,这可能会让你做几天的噩梦。
答案 1 :(得分:1)
根据我的经验,如果列表中的元素数量少于50且布局没有使用太多内存,那么最好使用滚动视图。
ListView是为更大的数据集而设计的,它旨在减少内存使用而不是性能。谷歌投入大量工作来优化其性能。与视图模式和现代硬件一起,感知性能接近完全填充的scrollview。
但是,如果数据集足够小而不影响内存使用,为什么需要Listview呢?由于谷歌进行了潜在的时髦优化,ListView与精美动画相结合时使用起来很棘手。
答案 2 :(得分:0)
我从类似的问题中学到的是,滚动视图比列表视图更顺畅。我的情况是选择一个用于导航抽屉,因为抽屉中的平稳充气和滚动会直接影响用户体验。 我首先采用了listview,但它并不顺利。然后我发现发现here谷歌开发人员使用scrolview而不是listview为抽屉工作顺利。 但是如果列表项的延迟加载是你需要的(不是我的情况),那么你应该去列表视图。