了解BaseAdapter以及如何使用它们

时间:2011-01-25 22:04:11

标签: android android-widget android-layout

我正在尝试设置一个图像GridView布局,这涉及从BaseAdapter类派生一个新类。我一直在developer.android.com网站上使用该教程,但我仍然不太明白这意味着什么。有人可以向我解释究竟什么是BaseAdapter?我不明白Android开发者网站提供的定义。

由于

2 个答案:

答案 0 :(得分:19)

适配器用于将数据绑定到视图。见AdapterView

  

AdapterView是 视图,其子项由适配器确定。

几个布局视图派生自AdapterView,如GridView,ListView和Gallery。

当然,您通常不直接使用AdapterViewAdapter,而是使用或派生自其中一个子类。 Adapter的子类可能会添加其他功能,这些功能会更改如何绑定要查看的数据。

BaseAdapter是Adapter接口的抽象基类,用于简化实现适配器。您可以实现自己的,但框架已经提供了一些非常灵活的适配器。一些流行的适配器是:

ArrayAdapter

  • 将数据数组绑定到视图
  • 覆盖getView()以对数组中给定索引进行膨胀,填充和返回自定义视图。 getView()方法通过convertView参数包含机会重用视图。

CursorAdapter

  • 将数据从游标(如数据库游标)绑定到视图
  • 摘要,所以你不要直接使用它,使用子类或派生自己的
  • 实现抽象方法newView()以扩充,填充并返回当前游标位置的所需视图,并实现抽象方法bindView以填充正在重用的现有视图。

SimpleCursorAdapter

  • CursorAdapter
  • 的具体实现
  • 它可以采用行布局和光标列到行布局小部件的映射
  • 支持文字和图片,但可以使用setViewTextsetViewImage
  • 进行自定义
  • 可以支持其他类型,并可以通过钩子自定义绑定:客户端使用SimpleCursorAdapter.ViewBinder方法实现setViewValue()接口,以膨胀,填充和返回给定行的所需视图(当前光标状态) )和数据“列”。此方法只能定义“特殊”视图和绑定,但仍然遵循SimpleCursorAdapter对“普通”绑定的标准行为。

答案 1 :(得分:3)

http://developer.android.com/resources/tutorials/views/hello-gridview.html

GridView是一种称为AdapterView的视图的子类。这些通常包含许多较小的视图,但依赖于适配器为它们提供这些视图。 BaseAdapter类是您扩展的类,以覆盖告诉AdapterView(您的GridView)要显示的内容的方法。要覆盖的最重要的方法是getView()方法,在该方法中返回View以显示在网格上的特定位置。

虽然这种设置有点令人困惑和复杂,但Android的开发人员选择了这一点,因为它允许的所有优化。通过重用Views而不是在getView方法中创建新的Views,可以获得AdapterViews的大量优化。这是你可以在getView方法中看到的convertView参数。如果convertView == null,那么该方法需要创建一个新的View对象并返回一个昂贵的操作。如果它不为null,则适配器可以重用View,只需更改该教程示例中的图像。