0

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

感谢任何帮助、想法和想法。:) 谢谢!

[编辑]

感谢 CommensWare 给了我一些新的想法。我现在所做的是检查 traceview 的内容。结果是,延迟分为两部分。延迟的前 300 毫秒采用“FastXMLSerialzier.escapeAndAppendString()”,调用次数超过 22.000。这似乎很多!在后半部分,可能会调用视图和布局的许多 onMeasure() 方法。

我尝试了什么:我用适配器中的静态虚拟值填充了每个文本视图,并排除了加载图像的部分。它没有任何改变,traceview 显示相同的图片。在第二次尝试中,我查看了列表项的 LinearLayout,并将找到的每个“wrap_content”都替换为“match_parent”——什么都没有。还是一样。

我仍然愿意接受你的想法和提示。:)

4

1 回答 1

0

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

如果您确实需要 500ms 才能生成 8 row Views,那么您的代码有问题。您可以使用 Traceview 来具体确定您在哪里花费时间,因此您可以尝试做一些事情来提高性能(例如,缓存)。

于 2012-11-06T12:53:25.707 回答