gpt4 book ai didi

android - 为什么 Wrap_Content 不止一次触发 BindView

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:14 25 4
gpt4 key购买 nike

我正在开发一个带有 listView 的 Android 应用程序,并且正在对其进行优化。它在一个 Activity 中使用自定义游标适配器,我注意到 bindview() 为列表的每一行触发了两次。在此处研究 BindView() 和 NewView() 方法时,我在一篇文章中读到,将 Wrap_Content 作为我的 ListView 的宽度是个坏主意。我将其切换为 Fill_Parent 和 viola 现在 bindview() 和 newview() 每个项目只触发一次。

为了更好地理解 Andorid 操作系统的内部结构,我想知道为什么 Wrap_Content 导致 bindview() 多次触发。

我在 Google、Android 开发者文档和此处进行了多次搜索,但没有成功。

非常感谢任何回复。

谢谢,乔治

最佳答案

如果我没记错的话,从 Google I/O 的视频中可以看出,将 ListView 的宽度(或高度)设置为 wrap_content 会导致它测量前 3 个项目并将其尺寸基于这些项目。为了测量前 3 个项目,它必须调用 bindView() 来填充它们。一旦测量完成,它将完全填充并在前 3 个和任何后续的上再次调用 bindView()

这是因为 ListView 仅在列表中可能有无限数量的项目时才将屏幕上的内容保存在内存中。它不是设计用于wrap_content 到您最大的项目,因为它可能永远停留在绘图阶段。

关于android - 为什么 Wrap_Content 不止一次触发 BindView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com