Android中文API (109) —— SimpleCursorTreeAdapter

时间:2023-03-08 17:42:49

前言

  本章内容是android.widget.SimpleCursorTreeAdapter,版本为Android 3.0 r1,翻译来自"深夜未眠",含示例代码,欢迎访问它的博客:"http://chirs1012f.javaeye.com/",再次感谢"深夜未眠" !期待你一起参与Android API的翻译,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://goo.gl/6vJQl

正文

  一、结构

public abstract class SimpleCusrorTreeAdapter extends     

                                            ResourceCusorTreeAdpater

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获取到的。

  七、补充

    文章精选

      android播放器(music player)源码分析2

    示例代码

      SimpleCursorTreeAdapter(深夜未眠).rar

SimpleCursorTreeAdapter.ViewBinder

译者署名: 深夜未眠

译者链接:http://chris1012f.javaeye.com/

翻译时间:2011-3-3

版本:Android 3.0 r1

结构

继承关系

public static interface SimpleCusrorTreeAdapter.ViewBinder

java.lang.Object

android.widget.SimpleCursorTreeAdapter.ViewBinder

类概述

这个内部接口可以在外部通过SimpleCursorTreeAdapter.ViewBinder的方式进行 Cursor与View的绑定。Android推荐我们采用这种方式进行绑定操作,而不是沿用SimpleCursorTreeAdapter内部的方式。

参见

setViewImage(ImageView, String)

     setViewText(TextView, String)

公共方法

public abstract boolean setViewValue (View view, Cursor cursor, int columnIndex)

  将指定的列数据绑定到指定的视图上。当ViewBinder处理绑定时,这个方法必须返回true;否则SimpleAdapter将尝试通过其内部默认的方法绑定数据。

参数

view                         被绑定的视图。

cursor                      数据库游标,绑定数据从它这里获取

columnIndex          列位置,能够在数据库游标中寻找到。

返回值

    返回true意味着数据与视图已经绑定上,否则为未绑定上。