我正在尝试设置一个图像GridView布局,这涉及从BaseAdapter类派生一个新类。我一直在developer.android.com网站上使用该教程,但我仍然不太明白这意味着什么。有人可以向我解释究竟什么是BaseAdapter?我不明白Android开发者网站提供的定义。
由于
答案 0 :(得分:19)
适配器用于将数据绑定到视图。见AdapterView:
AdapterView是 视图,其子项由适配器确定。
几个布局视图派生自AdapterView,如GridView,ListView和Gallery。
当然,您通常不直接使用AdapterView
和Adapter
,而是使用或派生自其中一个子类。 Adapter的子类可能会添加其他功能,这些功能会更改如何绑定要查看的数据。
BaseAdapter
是Adapter接口的抽象基类,用于简化实现适配器。您可以实现自己的,但框架已经提供了一些非常灵活的适配器。一些流行的适配器是:
的 ArrayAdapter 强> ,
getView()
以对数组中给定索引进行膨胀,填充和返回自定义视图。 getView()
方法通过convertView
参数包含机会重用视图。的 CursorAdapter 强> ,
newView()
以扩充,填充并返回当前游标位置的所需视图,并实现抽象方法bindView
以填充正在重用的现有视图。的 SimpleCursorAdapter 强> ,
CursorAdapter
setViewText
和setViewImage
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,只需更改该教程示例中的图像。