适配器在 Android 中的作用是啥?

Posted

技术标签:

【中文标题】适配器在 Android 中的作用是啥?【英文标题】:What's the role of adapters in Android?适配器在 Android 中的作用是什么? 【发布时间】:2011-04-10 03:37:38 【问题描述】:

我想知道whenwhere以及如何适配器在android上下文中的使用。

Android 开发者文档中的信息对我来说不够充分,我希望得到更详细的分析。

【问题讨论】:

【参考方案1】:

Android 中的适配器基本上是 UI 组件和将数据填充到 UI 组件中的数据源之间的桥梁

例如,列表(UI 组件)通过使用列表适配器从数据源数组中填充。

【讨论】:

这与我可以从文档中获得的信息相同。但我想要一个详细的解释 如果我们想要有多个活动,每个活动都有自己的列表视图,我们是否需要为每个活动定义一个适配器?【参考方案2】:

假设您想在您的 Android 应用中显示一个列表。 为此,您将使用 Android 提供的ListViewListViews 本身实际上并不包含任何数据。 它只是一个没有数据的 UI 元素。 您可以使用 Android 适配器填充您的 ListViews。

Adapter 是一个接口,其实现提供数据并控制该数据的显示。 ListViews 拥有完全控制 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&lt;&gt;) 并将其传递到布局(.xml 文件)。

【讨论】:

迄今为止最好的例子 :D 干得好!【参考方案4】:

Android 中的适配器是适配器视图(例如ListView)和该视图的基础数据之间的桥梁。 想象一下没有适配器的世界会怎样!

示例

在垂直滚动列表中显示项目的视图。 这些项目来自与此视图关联的ListAdapter

ListAdapter 定义列表中各个行的布局和 通过setAdapter() 方法向ListView 提供数据 ListView.

Android 提供了几种标准适配器;最重要的是 ArrayAdapterCursorAdapter

ArrayAdapter可以处理基于数组或列表的数据。

SimpleCursorAdapter 可以处理数据库相关数据。

【讨论】:

【参考方案5】:

适配器主要用于交付内容。您可能在每个应用程序中都有一个适配器是 CursorAdapter,它使您能够从数据库查询中传递由游标给出的内容。 ListView 几乎总是有某种适配器。

【讨论】:

这与我可以从文档中获得的信息相同。但我想要一个详细的解释 @Robin:你为什么不通过“接受”其中一个回复来庆祝你的问题提出 10 周年。就个人而言:1)我发现你的问题很有价值(这就是我在这里结束的方式),2)我发现其中许多回复很有帮助(包括这个)......以及 3)我不知道你所说的“更详细的解释”。也许那是因为我对“为什么”更感兴趣(如上所述)。我对“森林”(如 WarrenFaith 的回应)比对“详细树”(我 可以从文档中得到)更感兴趣。请投票并接受:)【参考方案6】:

适配器充当AdapterView 和该视图的基础数据之间的桥梁。 适配器提供对数据项的访问,并负责为数据集中的每个项创建一个视图。

适配器是将View 与某种数据源连接起来的一种智能方式。通常,您的视图将是ListView,数据将以CursorArray 的形式出现。 所以适配器是CursorAdapterArrayAdapter 的子类。

【讨论】:

【参考方案7】:

适配器管理数据模型并使其适应列表视图中的各个行。 它扩展了BaseAdapter 类。

列表视图中的每一行都包含一个可以任意复杂的布局。 列表视图中的典型行在左侧有一个图像,在中间有两个文本行。

【讨论】:

【参考方案8】:

Adapter 只是用来实现listview 的概念。不仅用于显示数据列表,还用于显示一些自定义视图。假设客户想要使用具有更多文本视图(任何其他视图)的列表,那么我们必须在 Android 中使用适配器视图。

【讨论】:

【参考方案9】:

已经给出了多个答案,但我想给出一个不同的答案。

适配器意味着你可以它的桥提供者

适配器是一组数据和显示数据的 AdapterView 之间的链接。

【讨论】:

【参考方案10】:

最后,适配器对于生成报告非常有用。如果要显示一些信息的报告,可以使用此工具在视图上显示数据。

【讨论】:

以上是关于适配器在 Android 中的作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java中啥是适配器模式及其作用是啥??

在我的团队中,即使我不知道任何 android 的信息,他们也会给我做一个适配器的作业。那是啥?

浅析android适配器adapter中的那些坑

android gridview 怎么在适配器中设置不可选择项

Android recyclerView 适配器弹出菜单不起作用

Interface Builder 中的适配是啥