ArrayAdapter、BaseAdapter和ListAdapter有什么区别?

40

请问您能告诉我 ArrayAdapterBaseAdapterListAdapter 之间的区别吗?

2个回答

51

BaseAdapter 顾名思义,是所有适配器的基类。

当您扩展 BaseAdapter 类时,您需要实现所有方法,例如 getCount()getId() 等。

ArrayAdapter 是一个可以处理数据数组的类。您只需要重写 getview() 方法即可。

ListAdapter 是由具体适配器类实现的接口。

BaseAdapter 是一个抽象类,而 ArrayAdapterListAdapter 是具体类。

ArrayAdapterListAdapter 类是开发出来的,因为一般我们处理的是数组数据集和列表数据集。


9
您说的 ArrayAdapter 是一个具体类是正确的。然而,ListAdapter 不是一个类,而是由 BaseAdapter 实现的接口。简而言之,您可以使用现成的 ArrayAdapter,或编写自己扩展 BaseAdapter 的适配器。 - Spinner
我有一个问题,我想在我的项目中使用数据库来填充用户数据,填充后,所有的项目都将显示在ListView中。但我不知道哪种适配器对我有用?ArrayAdapter还是BaseAdapter?请帮帮我。谢谢。 - Mina Dahesh
应该使用CursorAdapter,请参见http://developer.android.com/reference/android/widget/CursorAdapter.html。 - Ashwin N Bhanushali

48

ListAdapter

它是扩展Adapter的接口,是ListView和支持列表的数据之间的桥梁。

BaseAdaper

常见的实现适配器的通用基类,可以同时在ListView(通过实现专门的ListAdapter接口)和Spinner(通过实现专门的SpinnerAdapter接口)中使用。

ArrayAdapter

一个具体的BaseAdapter,由任意对象数组支持。

请参考以下链接

  1. ListAdapter

  2. BaseAdapter

  3. ArrayAdapter


2
请注意,ListAdapter是一个接口,而另外两个是实现了ListAdapter的类(其中一个是间接实现)。 - Spinner
4
你能举个例子说明我何时需要使用基础适配器(Base Adapter)和数组适配器(Array Adapter)吗? - user1708134

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接