【问题标题】:Android: recycler mechanism of ListViewAndroid:ListView的回收机制
【发布时间】:2018-04-19 16:11:27
【问题描述】:

我以为我了解Listview的回收机制...但似乎我没有。

我有一个包含 20 个项目的 ListView,最初只有 10 个项目可见。为什么 Android 调用 getView() 的位置如 15 或 17(不可见的行)?

为什么传递给getView()的可见行的convertView参数是一样的?我想如果 convertView 不为空,它指的是不再可见的行。

在 getView() 中添加一些日志记录后,我无法解释到底发生了什么。

【问题讨论】:

标签: android listview


【解决方案1】:

convertView 是一个 View 实例,之前由 getView 方法返回并且不再可见,其目的是转换为方法中新位置分配的 NEW ITEM。适配器这样做是为了重用视图并避免膨胀新视图。如果它两次调用相同的可见行,它只能在列表视图膨胀时间(它发生)。

对于第一个问题,它会膨胀不可见的视图,以便在您到达它时可以滚动。

您必须:将 convertView 中的所有值重新设置为新项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多