Android中文API (109) —— SimpleCursorTreeAdapter

简介:

正文

  一、结构

 

public abstract class SimpleCusrorTreeAdapter extends     

                                            ResourceCusorTreeAdpater

java.lang.Object

android.widget.BaseExpandableListAdapter

         android.widget.CursorTreeAdapter

                            android.widget.ResourceCusorTreeAdapter

                                     android.widget.SimpleCursorTreeAdapter

 

 

  二、概述

 

  这是一个用起来很方便的适配器类,它主要将Cursor与在XML文件中定义的TextViewImageView进行映射。比如,你想设定要展示三列,那么当做好绑定之后,视图就会展示你设定好的那些列;当然了,视图的外观是定义在XML文件里面的,你只需用这个类与视图做好绑定就可以了。(译者注:Android推荐我们尽可能的将组视图和子视图分离开,也就是说不要把整体定义在一个布局文件当中。)与视图绑定有两个阶段。第一阶段:如果使用SimpleCursorTreeAdapter.ViewBinder时,那么就会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText(TextView, String);若绑定到ImageView上,调用setViewImage(ImageView, String),如果视图不是TextViewImageView则抛出IllegalStateException异常。

 

 

  三、内部类

 

    public interface SimpleCursorTreeAdapter.ViewBinder

    这个内部接口可以在外部通过SimpleCursorTreeAdapter.ViewBinder的方式进行 CursorView的绑定。

 

 

  四、构造函数

 

  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”中指定的视图IDlastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图ID

    lastChildLayout      布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图IDlastChildLayout布局资源文件标识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”中指定的视图IDlastChildLayout布局资源文件标识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”中指定的视图IDlastChildLayout布局资源文件标识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            用于获取数据的CoursorCoursor已经移到正确的位置。

                            isLastChild  子元素是否处于组中的最后一个

 

  protected void bindGroupView (View view, Context context, Cursor cursor, boolean isExpanded)

           通过参数cursor将数据绑定到已有组视图上。

                   参数                           

                            view                已有组视图,返回之前调用newGroupView创建的视图。

                            context          应用程序上下文

                            cursor            用于获取数据的CoursorCoursor已经移到正确的位置。

                            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的方式进行 CursorView的绑定。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 意味着数据与视图已经绑定上,否则为未绑定上。


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582375,如需转载请自行联系原作者
相关文章
|
7月前
|
Android开发
Android 11 修改libcore update-api 遇到的问题
Android 11 修改libcore update-api 遇到的问题
174 1
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
378 1
|
4月前
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
113 0
|
6月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
66 2
|
6月前
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
7月前
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
48 2
|
7月前
|
API Android开发
Android Framework增加API 报错 Missing nullability on parameter
Android Framework增加API 报错 Missing nullability on parameter
334 1
|
7月前
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了
|
7月前
|
API Android开发
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
106 3
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
146 2