SimpleCursorTreeAdapter
public abstract class SimpleCursorTreeAdapter
extends ResourceCursorTreeAdapter
java.lang.Object
android.widget.BaseExpandableListAdapter
android.widget.CursorTreeAdapter
android.widget.ResourceCusorTreeAdapter
android.widget.SimpleCursorTreeAdapter
二、概述
这是一个用起来很方便的适配器类,它主要将Cursor与在XML文件中定义的TextView或ImageView进行映射。比如,你想设定要展示三列,那么当做好绑定之后,视图就会展示你设定好的那些列;当然了,视图的外观是定义在XML文件里面的,你只需用这个类与视图做好绑定就可以了。(译者注:Android推荐我们尽可能的将组视图和子视图分离开,也就是说不要把整体定义在一个布局文件当中。)与视图绑定有两个阶段。
第一阶段:如果使用SimpleCursorTreeAdapter.ViewBinder时,那么就会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText(TextView, String);若绑定到ImageView上,调用setViewImage(ImageView, String),如果视图不是TextView或ImageView则抛出IllegalStateException异常。
三、内部类
public interface SimpleCursorTreeAdapter.ViewBinder
这个内部接口可以在外部通过SimpleCursorTreeAdapter.ViewBinder的方式进行 Cursor与View的绑定。
四、构造函数
public SimpleCursorTreeAdapter (Context context, Cursor cursor,
int collapsedGroupLayout, int expandedGroupLayout,
String[] groupFrom, int[] groupTo, int childLayout,
int lastChildLayout, String[] childFrom, int[] childTo)
参数
- context 上下文,多指ExpandableListView的上下文
- cursor 数据库游标
- collapsedGroupLayout 布局资源文件标识ID,其定义的是收缩时的ExpandableListView布局样式,并且内部至少要包含参数"groupTo"中指定的视图ID。
- expandedGroupLayout 布局资源文件标识ID,其定义的是展开时的ExpandableListView布局样式,并且内部至少要包含参数"groupTo"中指定的视图ID。
- groupFrom 列名列表,显示ExpandableListView的组节点。
- groupTo 展示参数"groupFrom"中的列,也就是说ExpandableListView中的视图显示的是参数 "groupFrom"的列值,它们应该都是TextView或是ImageView。
- childLayout 布局资源文件标识ID,其定义的是子视图的布局样式 (不包括最后一个子视图),内部至少要包含参数 "childTo"中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数"childTo"中指定的视图ID。
- lastChildLayout 布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数"childTo"中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数"childTo"中指定的视图ID。
- childFrom 列名列表,显示ExpandableListView的子节点。
- childTo 展示参数"childFrom "中的列,也就是说ExpandableListView中的视图显示的是参数 "childFrom "的列值,它们应该都是TextView或是ImageView。
public SimpleCursorTreeAdapter (Context context, Cursor cursor,
int collapsedGroupLayout, int expandedGroupLayout,
String[] groupFrom, int[] groupTo,
int childLayout, String[] childFrom, int[] childTo)
该构造函数只是少了一个参数lastChildLayout
参数
- context 上下文,多指ExpandableListView的上下文
- cursor 数据库游标
- collapsedGroupLayout 布局资源文件标识ID,其定义的是收缩时的ExpandableListView布局样式,并且内部至少要包含参数"groupTo"中指定的视图ID。
- expandedGroupLayout 布局资源文件标识ID,其定义的是展开时的ExpandableListView布局样式,并且内部至少要包含参数"groupTo"中指定的视图ID。
- groupFrom 列名列表,显示ExpandableListView的组节点。
- groupTo 展示参数"groupFrom"中的列,也就是说ExpandableListView中的视图显示的是参数 "groupFrom"的列值,它们应该都是TextView或是ImageView。
- childLayout 布局资源文件标识ID,其定义的是子视图的布局样式 (不包括最后一个子视图),内部至少要包含参数 "childTo"中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数"childTo"中指定的视图ID。
- childFrom 列名列表,显示ExpandableListView的子节点。
- childTo 展示参数"childFrom "中的列,也就是说ExpandableListView中的视图显示的是参数 "childFrom "的列值,它们应该都是TextView或是ImageView。
public SimpleCursorTreeAdapter (Context context,
Cursor cursor, int groupLayout,
String[] groupFrom, int[] groupTo,
int childLayout, String[] childFrom, int[] childTo)
参数
- context 上下文,多指ExpandableListView的上下文
- cursor 数据库游标
- groupLayout 显示组元素的资源文件。该资源文件定义了如何显示组元素。该布局文件必须至少包括groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)
- groupFrom 列名列表,显示ExpandableListView的组节点。
- groupTo 展示参数"groupFrom"中的列,也就是说ExpandableListView中的视图显示的是参数 "groupFrom"的列值,它们应该都是TextView或是ImageView。
- childLayout 布局资源文件标识ID,其定义的是子视图的布局样式 (不包括最后一个子视图),内部至少要包含参数 "childTo"中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数"childTo"中指定的视图ID。
- childFrom 列名列表,显示ExpandableListView的子节点。
- childTo 展示参数"childFrom "中的列,也就是说ExpandableListView中的视图显示的是参数 "childFrom "的列值,它们应该都是TextView或是ImageView。
五、公共方法
public SimpleCursorAdapter.ViewBinder getViewBinder ()
返回SimpleCursorTreeAdapter.ViewBinder引用,这个ViewBinder用来将数据绑定到 视图上的。
返回值
如果ViewBinder不存在,则返回null。
参考
setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder)
public void setViewBinder (SimpleCursorTreeAdapter.ViewBinder viewBinder)
. 设置视图绑定器。
参数
- viewBinder 视图绑定器。可以设置为null来删除已经存在的绑定器。
参考
getViewBinder()
public void setViewText (TextView v, String text)
仅当ViewBinder不存在或是当ViewBinder不为TextView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为TextView设置文本。可重写适配器从数据库中检索过滤字符串。
参数
- v 文本控件引用
- value 为文本控件设置的文本信息(译者注:是从Cursor获取到的)。
六、受保护方法
protected void bindChildView (View view, Context context,
Cursor cursor, boolean isExpanded)
通过参数cursor将数据绑定到已有的子视图上。。
参数
- view 已有视图,返回之前调用newChildView创建的视图。
- context 应用程序上下文
- cursor 用于获取数据的Coursor。Coursor已经移到正确的位置。
- isLastChild 子元素是否处于组中的最后一个
protected void bindGroupView (View view, Context context,
Cursor cursor, boolean isExpanded)
通过参数cursor将数据绑定到已有组视图上。
参数
- view 已有组视图,返回之前调用newGroupView创建的视图。
- context 应用程序上下文
- cursor 用于获取数据的Coursor。Coursor已经移到正确的位置。
- isExpanded 组视图是否呈展开状态
protected void setViewImage (ImageView v, String value)
这个方法会被bindView()调用,以便为ImageView设置图片。默认情况下,参数value作为图片资源ID来看待,否则会视为图片的Uri。 另外还可以通过过滤器来获得更灵活的设置。
参数
- v 图片控件引用
- value 图片资源ID,是从Cursor获取到的。