作者givemepass (〆)
看板AndroidDev
标题Re: [问题] ListView 与 Adapter是什麽关系?
时间Wed Jul 24 13:45:48 2013
※ 引述《SamLucien (黑)》之铭言:
: 一直不明白为什麽写一个ListView 会需要用到 Adapter?
: 我去翻了『深入浅出的设计模式』中的 Adapter模式
: Adapter它是将某个东西转换为某个东西
: 但是我看不出来为什麽ListView的实作 是需要经过Adapter转换
: 很想知道为什麽写ListView需要用到Adapter~
: 谢谢大家!!!
最常见的例子 就是三孔转两孔的转接器
┌┐ ┌──┬┐ ┌─┐
│├─ │● │├─ │●│
──┤├──│ ●││ │ ├──
│├─ │● │├─ │●│
└┘ └──┴┘ └─┘
A B C
(呼~好久没画图了 画的真丑)
不知道这样看不看得懂, 我们常常拿到延长线的插座,
会多出一个接地的接头, 但是一般的插座却只有两个孔,
A跟C是两种不同介面的物品, 透过转接器, 可以让它们串接起来。
我们可以使用android所规画好的component, 来呈现一般常见的呈现方式,
例如GridView ListView...等
而这些资料其实都是透过内部的一些排列, 所转换出来的,
┌─────────────┐
├─┤ │ │
├─┤→│TextView ImageView Button│
├─┤ │ │
├─┤ └─────────────┘
我们将左边的ListView其中一个view放大来看,
会看到右边Data Source的呈现,
假设里面塞了三个元件,
来想想看ListView为什麽可以将我们的Data Source变成ListView的呈现方式,
没错! 就是转接器(adapter)!
我们的Data Source透过adapter(B)来告知listview(C)要这样呈现。
因此就将Data Source跟ListView串接起来了!
Android内很多种转接器, 举一些比较常见的
例如内定的ArrayAdapter, 他非常简单,
仅仅使用一个TextView来塞入ListView,
因此你只需要丢入一个字串阵列给adapter,
他就会将你丢入的字串, 一个一个排列成ListView的模样。
假设你又想要自己做排列, 这时候你就可以使用SimpleAdapter,
他会吃下你自己所排列的xml, 用ListView来呈现。
假设你完全想自己定义view来做一些更细节的操作,
例如文字跑马灯、颜色...等等。
那麽你就可以自行定义BaseAdpater。
以上是我对adapter的理解, 希望对你有帮助。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.150.181
※ 编辑: givemepass 来自: 114.38.150.181 (07/24 13:47)
1F:推 ian90911:推 简单易懂 07/24 13:50
2F:推 popcorny:Adapter应该是View跟Data的Adapter,不是View跟View的 07/24 14:01
好的 那我改一下
※ 编辑: givemepass 来自: 114.38.150.181 (07/24 14:42)
3F:推 SamLucien:是恶补大神 真荣幸~ 07/25 00:28
4F:推 SamLucien:所以就以这篇教学范例,以Adapter来说 右边的ListView 07/25 00:57
5F:推 SamLucien:的单行放大Data Source呈现,是不是就是我们通常拉好一个 07/25 01:03
6F:推 SamLucien:的预将呈现 Data Source Layout??? 07/25 01:08
7F:→ SamLucien:例如:App聊天视窗 文字泡泡框 就是一个Adapter? 07/25 01:19
9F:推 SamLucien:givemepass 谢谢 07/26 09:11