【发布时间】:2012-11-06 11:43:31
【问题描述】:
我搜索了几个小时,但没有找到适合我的解决方案。 我想要做什么:在我的 ListFragment 中,我使用 onListItemClick(...) 方法来处理点击事件。在这里,我更改了行项目的背景。但不幸的是,每次调用 onListItemClick(...) 时,也会调用来自适配器的 getView() 并更新所有 8 个可见行项。这需要很长时间:0.5 秒。因为行布局非常复杂(2 个图像,8 个文本视图)。 所以我只想更新被点击的行。我想使用this solution 但这没有任何效果,当其他 7 行项目无论如何都更新时。 我已经关注these advices 以加快列表速度,但速度仍然很慢。
感谢任何帮助、想法和想法。 :) 谢谢!
[编辑]
感谢 CommensWare 给了我一些新的想法。我现在所做的是检查 traceview 的内容。结果是,延迟分为两部分。延迟的前 300 毫秒采用“FastXMLSerialzier.escapeAndAppendString()”,调用次数超过 22.000。这似乎很多!在后半部分,视图和布局的许多(可能是全部)onMeasure() 方法被调用。
我尝试了什么: 我用适配器中的静态虚拟值填充了每个文本视图,并排除了加载图像的部分。它没有任何改变,traceview 显示相同的图片。 在第二次尝试中,我查看了列表项的 LinearLayout,并将找到的每个“wrap_content”都替换为“match_parent”——什么都没有。还是一样。
我仍然愿意接受您的想法和提示。 :)
【问题讨论】:
-
您是在每次调用 getView 时都在膨胀视图,还是在重用作为参数传递给 getView 的视图?
-
我正在使用 convertView 来避免新的膨胀视图,就像我在问题的第一个链接中提到的那样。
标签: android performance listview