适配器在 Android 中的作用是啥?
Posted
技术标签:
【中文标题】适配器在 Android 中的作用是啥?【英文标题】:What's the role of adapters in Android?适配器在 Android 中的作用是什么? 【发布时间】:2011-04-10 03:37:38 【问题描述】:我想知道when、where以及如何适配器在android上下文中的使用。
Android 开发者文档中的信息对我来说不够充分,我希望得到更详细的分析。
【问题讨论】:
【参考方案1】:Android 中的适配器基本上是 UI 组件和将数据填充到 UI 组件中的数据源之间的桥梁
例如,列表(UI 组件)通过使用列表适配器从数据源数组中填充。
【讨论】:
这与我可以从文档中获得的信息相同。但我想要一个详细的解释 如果我们想要有多个活动,每个活动都有自己的列表视图,我们是否需要为每个活动定义一个适配器?【参考方案2】:假设您想在您的 Android 应用中显示一个列表。
为此,您将使用 Android 提供的ListView
。
ListView
s 本身实际上并不包含任何数据。
它只是一个没有数据的 UI 元素。
您可以使用 Android 适配器填充您的 ListView
s。
Adapter
是一个接口,其实现提供数据并控制该数据的显示。
ListView
s 拥有完全控制 ListView
的适配器
展示。
所以适配器控制列表中显示的内容以及如何显示它。
Adapter
接口包括将数据传送到ListView
的各种方法。
您可以通过实现BaseAdapter
从头开始创建自己的适配器。
public class ArrayAdapter<T> extends BaseAdapter implements Filterable
// One of the constructors
public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
init(context, resource, textViewResourceId, Arrays.asList(objects));
void manyMoreMethods()
让我们定义一个适配器:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
第一个参数:上下文
第二个参数:行的布局
第三个参数:写入数据的TextView
的ID
第四个参数:数据数组
【讨论】:
【参考方案3】:我想分享我的理解。
它是数据源和您的布局(很可能是 ListView)之间的接口。
类比
让我们以移动充电器或 USB 数据线为例。 电线可以理解为适配器,数据源和布局可以分别理解为插座(插入点)和USB端口(充电点)。
在移动充电的情况下, 力量的来源可能不同, 例如从移动电源、插座或笔记本电脑充电。 Android 中使用的适配器也是如此。 数据源可能会根据应用需求而改变。
简而言之,Android 中的适配器携带来自源的数据
(例如ArrayList<>
)
并将其传递到布局(.xml 文件)。
【讨论】:
迄今为止最好的例子 :D 干得好!【参考方案4】:Android 中的适配器是适配器视图(例如ListView
)和该视图的基础数据之间的桥梁。
想象一下没有适配器的世界会怎样!
示例
在垂直滚动列表中显示项目的视图。
这些项目来自与此视图关联的ListAdapter
。
ListAdapter
定义列表中各个行的布局和
通过setAdapter()
方法向ListView
提供数据
ListView
.
Android 提供了几种标准适配器;最重要的是
ArrayAdapter
和 CursorAdapter
。
ArrayAdapter
可以处理基于数组或列表的数据。
SimpleCursorAdapter
可以处理数据库相关数据。
【讨论】:
【参考方案5】:适配器主要用于交付内容。您可能在每个应用程序中都有一个适配器是 CursorAdapter,它使您能够从数据库查询中传递由游标给出的内容。 ListView 几乎总是有某种适配器。
【讨论】:
这与我可以从文档中获得的信息相同。但我想要一个详细的解释 @Robin:你为什么不通过“接受”其中一个回复来庆祝你的问题提出 10 周年。就个人而言:1)我发现你的问题很有价值(这就是我在这里结束的方式),2)我发现其中许多回复很有帮助(包括这个)......以及 3)我不知道你所说的“更详细的解释”。也许那是因为我对“为什么”更感兴趣(如上所述)。我对“森林”(如 WarrenFaith 的回应)比对“详细树”(我 可以从文档中得到)更感兴趣。请投票并接受:)【参考方案6】:适配器充当AdapterView
和该视图的基础数据之间的桥梁。
适配器提供对数据项的访问,并负责为数据集中的每个项创建一个视图。
适配器是将View
与某种数据源连接起来的一种智能方式。通常,您的视图将是ListView
,数据将以Cursor
或Array
的形式出现。
所以适配器是CursorAdapter
或ArrayAdapter
的子类。
【讨论】:
【参考方案7】:适配器管理数据模型并使其适应列表视图中的各个行。
它扩展了BaseAdapter
类。
列表视图中的每一行都包含一个可以任意复杂的布局。 列表视图中的典型行在左侧有一个图像,在中间有两个文本行。
【讨论】:
【参考方案8】:Adapter 只是用来实现listview 的概念。不仅用于显示数据列表,还用于显示一些自定义视图。假设客户想要使用具有更多文本视图(任何其他视图)的列表,那么我们必须在 Android 中使用适配器视图。
【讨论】:
【参考方案9】:已经给出了多个答案,但我想给出一个不同的答案。
适配器意味着你可以它的桥提供者。
适配器是一组数据和显示数据的 AdapterView 之间的链接。
【讨论】:
【参考方案10】:最后,适配器对于生成报告非常有用。如果要显示一些信息的报告,可以使用此工具在视图上显示数据。
【讨论】:
以上是关于适配器在 Android 中的作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在我的团队中,即使我不知道任何 android 的信息,他们也会给我做一个适配器的作业。那是啥?
android gridview 怎么在适配器中设置不可选择项