首页 > Java > java教程 > 为什么我的 Android ListView 的 getView() 方法会被多次调用,并且顺序明显是随机的?

为什么我的 Android ListView 的 getView() 方法会被多次调用,并且顺序明显是随机的?

Linda Hamilton
发布: 2024-12-10 00:00:18
原创
469 人浏览过

Why Does My Android ListView's getView() Method Get Called Multiple Times and in an Apparently Random Order?

为什么 getView 被多次调用且顺序不连贯?

正如您在自定义列表适配器中观察到的, getView 方法被多次调用每一行,而且看起来都是以随意的方式完成的。这种行为可能会令人困惑,但实际上这不是 Android 设计中的问题。

为什么要多次调用?

尽管人们普遍认为 getView 应该只针对可见行调用,但事实并非如此。当您滚动列表时,ListView 项目会被回收和重用。为了促进这种回收,ListView 预先测量并缓存即将变得可见的行的视图。这个预测量过程需要多次调用 getView 来确定视图的尺寸。

“顺序不连贯”

getView 调用中感知到的缺乏顺序也是回收。当行滚动到视图之外时,它们的关联视图将从缓存中删除,并重新用于即将变得可见的视图。这意味着 getView 调用的顺序可能会根据用户的滚动行为而变化。

您的具体示例

在您的例子中,您已经为 ListView 提供了一个wrapp_content 高度。这迫使 ListView 在布局时测量多个子项以确定其自身的高度。因此,ListView 在开始滚动之前就为这些子视图创建了缓存视图。

结论

ListView 的回收机制对于保持平滑的滚动性能至关重要。虽然 getView 调用的顺序和次数可能看起来不稳定,但这是此机制的自然副产品,并不是错误或 bug。

以上是为什么我的 Android ListView 的 getView() 方法会被多次调用,并且顺序明显是随机的?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板