Android:避免适配器中来自getView()的不必要调用

Android:避免适配器中来自getView()的不必要调用,android,performance,listview,Android,Performance,Listview,我搜索了几个小时,但没有找到适合我的解决方案。 我想做的是:在我的ListFragment中,我使用onListItemClick(…)方法来处理click事件。在这里,我更改行项目的背景。但不幸的是,每次调用onListItemClick(…)时,也会调用适配器中的getView(),并更新所有8个可见行项目。这需要很多时间:0.5秒。因为行布局非常复杂(2个图像,8个文本视图)。 因此,我只想更新单击的行。我想使用,但当其他7行项目被更新时,这没有效果。 我已经跟着加快了列表的速度,但仍然很

我搜索了几个小时,但没有找到适合我的解决方案。 我想做的是:在我的ListFragment中,我使用onListItemClick(…)方法来处理click事件。在这里,我更改行项目的背景。但不幸的是,每次调用onListItemClick(…)时,也会调用适配器中的getView(),并更新所有8个可见行项目。这需要很多时间:0.5秒。因为行布局非常复杂(2个图像,8个文本视图)。 因此,我只想更新单击的行。我想使用,但当其他7行项目被更新时,这没有效果。 我已经跟着加快了列表的速度,但仍然很慢

感谢您的帮助、想法和想法。:) 谢谢大家!

[编辑]

感谢Commonsware给了我一些新的想法。我现在做的是检查traceview说的话。结果是,延迟被分为两部分。延迟的前300毫秒使用“FastXMLSerialzier.escapeAndAppendString()”,调用次数超过22000次。这似乎太多了!在下半部分中,调用了视图和布局的许多(可能全部)onMeasure()方法

我尝试的是: 我在适配器中用静态虚拟值填充每个textview,并通过加载图像排除该部分。它不会改变任何东西,traceview显示相同的图片。 在第二次尝试中,我查看了列表项的线性布局,并将找到的每个“包装内容”替换为“匹配父项”-没有。还是一样


我仍然愿意听取您的想法和提示。:)

您无法控制调用
getView()
的时间和频率


如果生成8行
视图确实需要500毫秒,那么代码有问题。您可以使用Traceview来确定具体的花费时间的位置,这样您就可以尝试做一些事情来提高性能(例如缓存)。

您是在每次调用getView时膨胀视图,还是重复使用作为参数传递给getView的视图?我使用convertView来避免新的膨胀视图,就像我问题的第一个环节提到的。