加快同一片段中多个列表视图的性能

时间:2015-03-30 14:56:42

标签: android android-layout android-listview android-viewholder android-recyclerview

为了理解我将要讨论的结构,首先看一下这个示例图片:

Multiple listviews

我需要在一个片段中显示多个ListView。问题是打开给定的片段时,给视图充气需要花费很多时间,因为:

每个ListView为自己充实3-5个项目,因为这两个ListView都没有废料视图。

因此片段会立即膨胀相同视图的10-30个实例,这很容易造成200-300ms长的口吃,这远远不能接受(片段有一个显示和隐藏动画)。

我的问题是,有没有办法加快通货膨胀(除了使用ViewHolders,简化层次结构,以及通常的事情)。由于视图属于同一类型,因此可能存在相同的全局Recycler ,其中存储了剪贴视图,并且比屏幕的生命周期更长,这导致在创建ListView时具有剪贴视图(查看ListView源代码,需要大量的编码和对内部的理解。

由于相当多的应用程序具有相似的结构,我很好奇他们如何解决(如果可能的话)通胀性能问题

1 个答案:

答案 0 :(得分:0)

您可以使用自定义视图作为列表项来减少实例化对象的数量。因此,如果您使用1个图像视图和3-4个文本视图作为列表项,则可以使用自定义将计数减少到1视图...

如果设计允许,您可以将整个6个图像作为一个自定义视图。