Chinese, Simplified 字幕

← -VPM6ICgCk8

-VPM6ICgCk8

埋め込みコードを取得する
10言語

Showing Revision 6 created 04/13/2016 by Udacity Robot.

  1. ListView 首先为每个
    可见项请求视图,
  2. 但可以在屏幕上显示的视图有很多。
  3. 它还会在各个方向
    创建若干个视图,以确保我们
  4. 可以滚动查看,而不会出现创建和填充
    新视图时的屏幕闪烁。
  5. 然后,它会适时创建新项。
  6. 因此,接下来就会
    向用户显示视图。
  7. 如果用户从不滚动
    至列表底部,
  8. 则 ListView 不会从
    适配器中请求该视图。
  9. 但这实际上只是权宜之计。
  10. 您可以看到,
    如果用户不断滚动屏幕,
  11. 我们可能只能不断添加新视图,
  12. 即使它们已从
    屏幕顶部消失。
  13. 这最终会对内存使用
    和性能产生影响,其效果
  14. 如同我们从一开始
    就自行创建这些
  15. 视图一样。
  16. 解决方案是在每个视图
    滚动出屏幕时将其回收,
  17. 以便在我们需要显示其他移动到
    顶部或底部视图的项
  18. 时重新使用该视图。
  19. 所以,我们不需要创建列表项,
    然后将显示的每个
  20. 列表项保存
    在内存中,
  21. 只需要为多个
    可见项
  22. 以及两侧的一些项执行创建步骤。
  23. 这样,每次显示新的
    列表项时,
  24. 我们只需要更新回收站内
    其中一个项中显示的数据。
  25. 结果?
  26. 内存消耗更少、滚动更流畅,您
    需要自行处理的
  27. 管理工作更少。
  28. 这一回收行为将在
  29. AdapterView 的所有后代类
    (如 GridView 和 ListView)中实现,
  30. 这些后代类还介绍了
    适配器未直接构建到
  31. 这些控件本身的原因。
  32. 通过将其保持分离,
  33. 适配器定义了如何显示
    基础数据的每个元素。
  34. 所实现的适配器
    视图本身
  35. 负责控制如何
    排列每个元素,
  36. 在这些特定实例中
    以列表或网格方式排列。