zoukankan      html  css  js  c++  java
  • ListView 中getView的原理详解

    ListView 和 Adapter 的基础

    工作原理:

    1. ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。

    2. 一个新的视图被返回并显示

    如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可能!

    实际上Android为你缓存了视图。

    Android中有个叫做Recycler的构件,下图是他的工作原理:

    1. 如果你有10亿个项目(item),其中只有可见的项目存在内存中,其他的在Recycler中。

    2. ListView先请求一个type1视图(getView)然后请求其他可见的项目。convertView在getView中是空(null)的。

    3. 当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图。

    请看下面的示例代码,这里在getView中使用了System.out进行输出

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    .relpost{clear:both}

    Tag:

    Freenovo 发表于2013-02-25 00:20:00 | 编辑 | 分享 0

    引用地址:

  • 相关阅读:
    多种开源OLAP引擎测评报告
    Go的单元测试
    C#的List实现IComparer接口排序实例
    Java 多线程:(一)
    android:theme
    android:excludeFromRecents="true"
    RK:主屏幕
    Gatsby xinhua log boork(三)
    RK:Provision.apk、SettingsProvider的分析、使用
    Camera(一):查看Camera设备详细信息
  • 原文地址:https://www.cnblogs.com/freenovo/p/4469821.html
Copyright © 2011-2022 走看看