Android适配器之---SimpleCursorAdapter

结构

继承关系

public class SimpleCusrorAdapter extends ResourceCusorAdpater

java.lang.Object

android.widget.BaseAdapter

         android.widget.CursorAdapter

                            android.widget.ResourceCusorAdapter

                                     android.widget.SimpleCusorAdapter

类概述

这是一个用起来很方便的适配器类,它主要将Cursor与TexiView或ImageView进行映射。比如,你想设定要展示三列,那么当做好绑定之后,视图就会展示你设定好的那些列;当然了,视图的外观是定义在XML文件里面的,你只需用这个类与视图做好绑定就可以了。与视图绑定有两个阶段。第一阶段:如果SimpleCursorAdapter.ViewBinder可用,将会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false ,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText();若绑定到ImageView上,调用setViewImage();如果视图不是TextView或ImageView则抛出IllegalStateException异常。当使用带有过滤器的适配器时,例如,在APIDemo中有个AutoCompleteTextView的例子,我们能使用SimpleCursorAdapter.CursorToStringConverter和接口         FilterQueryProvider来控制过滤过程。更多信息请参考convertToString(android.database.Cursor)runQueryOnBackgroundThread(CharSequence)

        

内部类

public interface SimpleCusorAdapter.ViewBinder        

         这个内部接口可以在外部通过SimpleCursorAdapter.ViewBinder的方式进行Cursor     与View的绑定。

public interface SimpleCusorAdapter.CursorToStringConverter

         这个内部接口可以在外部通过SimpleCursorAdapter.CursorToStringConverter的方式   定义怎样将Cursor转换成字符串。

构造函数

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)

         构造函数启动自动重新查询(auto-requery)。

         这个构造器已被标记为弃用(@Deprecated)

该方法不推荐使用,Cursor查询操作是执行在应用程序的UI线程当中,那么会导致无响应的情况。另一种方式是使用LoaderManagerCursorLoader来进行。

         (译者注:3.0已不推荐使用该构造方法)

                   参数

                            context  应用程序上下文,具体来说就是ListView所在的上下文当中。

layout       布局文件的资源定位标识符,也就是说标识了ListView中的item。那么这个布局文件至少包含了参数“to”中的传进来值。

                            c                 数据库游标,如果游标不可用则为null。

from                   列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。

to               展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[]      to,int flags)     

         该适配器类标准的构造函数。(译者注:3.0新添的构造方法)

                   参数

                            context  应用程序上下文,具体来说就是ListView所在的上下文当中。

layout       布局文件的资源定位标识符,也就是说标识了ListView中的item。那么这个布局文件至少包含了参数“to”中的传进来值。

                            c                数据库游标,如果游标不可用则为null。

from                   列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。

to               展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。

flags                   这个标志用来决定该适配器的行为。(译者注:Android3.0推荐我们传递CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER。设置标志用来添加一个监听器,监听着参数cursor的数据是否有更变。)

公共方法

public void bindView (View view, Context context, Cursor cursor)

         绑定所有构造函数中的参数from(字段名)一一绑定到参数to(视图资源ID)。与视图绑定有两个阶段。第一阶段:如果SimpleCursorAdapter.ViewBinder可用,将会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false ,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText();若绑定到ImageView上,调用setViewImage();如果视图不是TextView或ImageView则抛出IllegalStateException异常。

参数

                            view                 已存在的视图(View)对象, 也就是早先new出来的。

                            context           应用程序上下文。

                            cursor               数据库游标。该游标已经移动到指定位置上。

                   异常

                            IllegalStateException 如果绑定的视图中不是TextView或是ImageView则会                           抛出这个异常。

                   参见

                   bindView(android.view.View, android.content.Context, android.database.Cursor)

                   getViewBinder()

                   setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder)

         setViewImage(ImageView, String)

                            setViewText(TextView, String)

public void changeCursorAndColumns(Cursor c, String[] from, int[] to)

         同时更改Cursor与View的映射关系。

参数

                            c                 数据库游标,如果游标不可用则为null。 

from                   列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。

to               展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。

                           

public CharSequence convertToString (Cursor cursor)

通过CursorToStringConverter接口实现并返回一个CharSequence  类型的值,以表示指定的Cursor。如果没有设置CursorToStringConverter,那么就会用另外的方式进行转换。如果列数为-1,或者 cursor为null返回空串,否则返回cursor.toString()。

                   参数

                            cursor               转换为CharSequence的数据库游标。

         返回值

                   返回一个不为null的CharSequence类型来表示参数cursor。

public SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter ()

         返回自定义的SimpleCursorAdapter.CursorToStringConverter的实现。

返回值

                            如果没有设置SimpleCursorAdapter.CursorToStringConverter,则为null。

参考

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getStringConversionColumn()

         setStringConversionColumn(int)

         convertToString(android.database.Cursor)

public int getStringConversionColumn ()

         返回转换成String类型的列位置。

返回值

                            返回列位置,如果没有则返回-1。

参考

                            convertToString(android.database.Cursor)

                            setStringConversionColumn(int)

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

                            getCursorToStringConverter()

public SimpleCursorAdapter.ViewBinder getViewBinder ()

返回SimpleCursorAdapter.ViewBinder引用,这个ViewBinder用来将数据绑定到视图上的。

返回值

                            如果ViewBinder不存在,则返回null。

参考

         bindView(android.view.View, android.content.Context, android.database.Cursor)

         setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder)

public void setCursorToStringConverter (SimpleCursorAdapter.CursorToStringConverter cursorToStringConverter)

设置String转换器。

                   参数

                            cursorToStringConverter  String转换器,设置为null就意味着移除。

                   参考

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getStringConversionColumn()

         setStringConversionColumn(int)

         convertToString(android.database.Cursor)

public void setStringConversionColumn (int stringConversionColumn)

设置Cursor中的列要转换成String类型的位置。不过仅当未设置CursorToStringConverter时,这个列才会进行默认转换。

                   参数

                            stringConversionColumn  列位置,如果参数为-1,则使用默认转换机制。

                   参考

         convertToString(android.database.Cursor)

         getStringConversionColumn()

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getCursorToStringConverter()

public void setViewBinder (SimpleCursorAdapter.ViewBinder viewBinder)

设置视图绑定器。

                   参数

                            viewBinder  视图绑定器,可用为null删除现有的绑定器。

                   参考

         bindView(android.view.View, android.content.Context, android.database.Cursor)

         getViewBinder()

public void setViewImage (ImageView v, String value)

仅当ViewBinder不存在或是当ViewBinder不为ImageView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为ImageView设置图片。默认情况下,参数value作为图片资源ID来看待,否则,会视为图片的Uri。         另外还可以通过过滤器来获得更灵活的设置。

                   参数

                            v                 图片控件引用

                            value         图片资源ID,是从Cursor获取到的。

public void setViewText (TextView v, String text)

仅当ViewBinder不存在或是当ViewBinder不为TextView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为TextView设置文本。可用重写适配器从数据库中检索过滤字符串。

                   参数

                            v                 文本控件引用

                            value         为文本控件设置的文本信息(译者注:是从Cursor获取到的)。

public Cursor swapCursor (Cursor c)

交换两个Cursor的列以及它们的数据,并最终返回的还是旧的Cursor。不同于changeCursor(Cursor)的是,旧的Cursor非但不会关闭,而且还会返回出去。(译者注:       3.0新添的方法)

                   参数

                            c  新的Cursor对象。

                   返回值

返回旧的Cursor引用,如果参数cursor不可用,则返回null。如果参数cursor与原来的Cursor引用相同,那么也返回null。

补充

         文章精选

                   ArrayAdapter和SimpleCursorAdapter例子

                   Android API : SimpleCursorAdapter()


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android中,适配器是用于将数据绑定到视图的重要组件。以下是一些常见的Android适配器类型: 1. ArrayAdapter:用于将数组或列表数据绑定到ListView、GridView等视图。 2. BaseAdapter:是所有适配器的基类。通过扩展BaseAdapter类,可以创建自定义适配器。 3. CursorAdapter:用于将数据库中的数据绑定到视图,如ListView、GridView等。 4. SimpleCursorAdapter:是CursorAdapter的子类,用于将数据库中的数据绑定到ListView等视图。 5. RecyclerView.Adapter:用于将数据绑定到RecyclerView视图。 6. PagerAdapter:用于在ViewPager中管理多个视图的适配器。 7. FragmentPagerAdapter:是PagerAdapter的子类,用于在ViewPager中管理多个Fragment的适配器。 8. FragmentStatePagerAdapter:是PagerAdapter的另一个子类,用于在ViewPager中管理大量Fragment的适配器。 这些适配器类型可以根据不同的需求选择使用。 ### 回答2: Android适配器是一种用于数据的转换和展示的重要组件。根据功能和用途的不同,Android适配器可以分为以下几种类型: 1. ArrayAdapter:这是最常见的适配器类型之一,用于将数据绑定到ListView等控件上。它可以将数组或集合中的数据显示在列表中,并提供默认的布局。 2. BaseAdapter:这是一个抽象适配器类,继承它可以自定义适配器。BaseAdapter提供了对ListView等控件的底层操作,如数据绑定和视图重用。开发者可以根据自己的需求,实现自定义的适配器。 3. SimpleAdapterSimpleAdapter是ArrayAdapter的一个子类,根据传入的数据和布局资源文件,将数据显示在ListView等控件上。和ArrayAdapter不同的是,SimpleAdapter可以将数据以键值对的形式进行绑定,并使用自定义的布局资源。 4. CursorAdapter:这种适配器用于连接数据库中的数据与视图,常用于将查询结果显示在ListView或GridView等控件上。CursorAdapter可以自动对数据库中的数据进行操作,并反映在UI上。 5. RecyclerViewAdapter:这是Android新推出的适配器类型,用于配合RecyclerView控件使用。RecyclerViewAdapter是RecyclerView的适配器,负责将数据绑定到RecyclerView上,并根据数据的变化更新视图。 总之,Android适配器类型繁多,开发者可以根据需求选择适合的适配器来操作数据,并将其展示在对应的UI控件上。适配器起到了连接数据和UI的桥梁作用,是Android开发中不可或缺的组件之一。 ### 回答3: 在Android开发中,适配器是用来将数据与界面进行绑定的桥梁。它负责将数据提供给视图,并将用户的操作反馈给相应的数据。Android中有多种适配器的类型,下面是一些常见的适配器种类: 1. ArrayAdapter: 这是最基本的适配器之一,用于将数据适配到ListView、Spinner等视图中。它接收一个数组或List作为数据源,并将每个元素呈现在视图中。 2. BaseAdapter: 这是一个抽象适配器类,可以自定义实现。它提供了一些基本方法,如获取数据源大小、获取指定位置的数据等,方便使用者根据自己的需求进行扩展。 3. RecyclerView.Adapter: 这是在Android支持库中引入的适配器,用于将数据适配到RecyclerView中。相较于ListView,RecyclerView具有更强大的布局和动画效果支持。 4. SimpleCursorAdapter: 这个适配器用于将数据适配到Cursor对象中,通常用于与数据库操作相关的界面。它可以将Cursor中的数据显示在ListView等视图中。 除了以上几种基本适配器,还有一些特殊用途的适配器,如SpinnerAdapter用于将数据适配到Spinner中,CursorAdapter用于将数据适配到ListView中的Cursor等。 值得一提的是,为了提高性能和良好的用户体验,通常建议使用数据绑定库,如DataBinding或ViewBinding,来自动生成适配器代码,简化开发过程。这些库可以根据数据源自动创建适配器,并处理视图与数据的更新和绑定,减少手动编写适配器的工作量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值